成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

使用 Object.create(null) 代替大括號(hào)生成({})對(duì)象

cangck_X / 2982人閱讀

摘要:傳統(tǒng)對(duì)象寫法為這種寫法等價(jià)于,所以并不是真正的空對(duì)象,它還通過(guò)原型鏈繼承了的屬性方法。輸出當(dāng)對(duì)象和數(shù)值進(jìn)行運(yùn)算的時(shí)候會(huì)對(duì)對(duì)象進(jìn)行隱式轉(zhuǎn)換,就變成了所以計(jì)算結(jié)果的長(zhǎng)度為。所以推薦大家使用代替大括號(hào)生成對(duì)象。

傳統(tǒng)對(duì)象寫法為 var obj = {} 這種寫法等價(jià)于 var obj = Object.create(Object.prototype) ,所以 {} 并不是真正的空對(duì)象,它還通過(guò)原型鏈繼承了 Object 的屬性方法。

這種方式不好地方是,{} 在某些時(shí)候會(huì)進(jìn)行隱式類型轉(zhuǎn)型,還有當(dāng)我們使用 for...in 時(shí)候會(huì)遍歷原形鏈上的屬性方法,如下面的代碼所示。

Object.prototype.test = "test";
var obj = {};
console.log((obj + 0).length); // 16
for (var i in obj) {
  console.log(i); // 輸出 test
}

當(dāng)對(duì)象和數(shù)值進(jìn)行運(yùn)算的時(shí)候會(huì)對(duì)對(duì)象進(jìn)行隱式轉(zhuǎn)換,{} + 1 就變成了 [object Object] + 0 所以計(jì)算結(jié)果的長(zhǎng)度為 16。

for...in 進(jìn)行遍歷的時(shí)候也會(huì)遍歷原型鏈可枚舉的屬性,所以當(dāng)遍歷的時(shí)候還需要使用 hasOwnProperty 進(jìn)行過(guò)濾操作。

Object.create(null) 沒(méi)有這樣的問(wèn)題,是一個(gè)沒(méi)有繼承 Object 原型的屬性和方法的純對(duì)象。

var obj = Object.create(null)
obj + obj  // Uncaught TypeError: Cannot convert object to primitive value
obj  + 1 // Uncaught TypeError: Cannot convert object to primitive value

性能方面,如下圖,在以前使用 Object.create(null) 會(huì)有性能問(wèn)題(比 {} 慢了很多倍),而現(xiàn)在已經(jīng)不是問(wèn)題了,而且更快了。

所以推薦大家使用 Object.create(null) 代替大括號(hào)生成({})對(duì)象。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/89982.html

相關(guān)文章

  • 創(chuàng)建對(duì)象的4種方式

    摘要:創(chuàng)建對(duì)象的種方式方式一通過(guò)對(duì)象字面量表示法又稱為直接量原始方式。例子在自定義構(gòu)造函數(shù)的內(nèi)部定義對(duì)象的方法函數(shù)的值賦給的屬性。 創(chuàng)建對(duì)象的4種方式 方式一:通過(guò)對(duì)象字面量表示法(又稱為直接量、原始方式)。object literals 方式二:通過(guò)new和構(gòu)造函數(shù)Object()、String()等。 方式三:用自定義構(gòu)造函數(shù)來(lái)初始化新對(duì)象。 方式四:通過(guò)Object.create()...

    seanlook 評(píng)論0 收藏0
  • ES6學(xué)習(xí)筆記2—各擴(kuò)展

    摘要:字符串的擴(kuò)展字符的表示法允許采用形式表示一個(gè)字符,其中表示字符的碼點(diǎn)。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。使用和這兩個(gè)常量,用來(lái)表示這個(gè)范圍的上下限。對(duì)于那些無(wú)法用個(gè)二進(jìn)制位精確表示的小數(shù),方法返回最接近這個(gè)小數(shù)的單精度浮點(diǎn)數(shù)。 字符串的擴(kuò)展 字符的 Unicode 表示法 JavaScript 允許采用uxxxx形式表示一個(gè)字符,其中xxxx表示字符的 Unicode 碼...

    Zoom 評(píng)論0 收藏0
  • ES6(3)- 各種類型的擴(kuò)展(數(shù)組、對(duì)象

    摘要:上面代碼中,分別是字符串布爾值和數(shù)值,結(jié)果只有字符串合入目標(biāo)對(duì)象以字符數(shù)組的形式,數(shù)值和布爾值都會(huì)被忽略。 1 數(shù)組的擴(kuò)展 http://es6.ruanyifeng.com/#do... 1.1 擴(kuò)展運(yùn)算符 2 對(duì)象的擴(kuò)展 http://es6.ruanyifeng.com/#do... 2.1 屬性的簡(jiǎn)潔表示法 ES6 允許直接寫入變量和函數(shù),作為對(duì)象的屬性和方法。這樣的書寫更加簡(jiǎn)...

    weapon 評(píng)論0 收藏0
  • JavaScript類的寫法

    摘要:在中,寫成類的本質(zhì)基本都是構(gòu)造函數(shù)原型。操作符左邊是待檢測(cè)類的對(duì)象,右邊是定義類的構(gòu)造函數(shù)。不宜用在這里,我們需要知道的幾種定義類的方法,除了上面的構(gòu)造函數(shù)外,還有方法用這個(gè)方法,類就是一個(gè)對(duì)象,而不是函數(shù)。 js類的基本含義 我們知道,在js中,是沒(méi)有類的概念的。類的所有實(shí)例對(duì)象都從同一個(gè)原型對(duì)象上繼承屬性,因此,原型對(duì)象是類的核心。 類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。類是抽象的...

    OnlyLing 評(píng)論0 收藏0
  • ES5(下)

    摘要:命令命令的作用,就是執(zhí)行構(gòu)造函數(shù),返回一個(gè)實(shí)例對(duì)象。實(shí)例對(duì)象相當(dāng)于創(chuàng)建一個(gè)空的構(gòu)造函數(shù),將其屬性指向參數(shù)對(duì)象,從而實(shí)現(xiàn)讓該實(shí)例繼承的屬性。 這是ES5的入門篇教程的筆記,網(wǎng)址:JavaScript教程,以下內(nèi)容中黑體表示大標(biāo)題,還有一些重點(diǎn);斜體表示對(duì)于自身,還需要下功夫?qū)W習(xí)的內(nèi)容。這里面有一些自己的見(jiàn)解,所以若是發(fā)現(xiàn)問(wèn)題,歡迎指出~ 實(shí)例對(duì)象與new命令面向?qū)ο缶幊淌悄壳爸髁鞯木幊谭?..

    includecmath 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<