国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 Object.create(null) 代替大括號生成({})對象

cangck_X / 2930人閱讀

摘要:傳統對象寫法為這種寫法等價于,所以并不是真正的空對象,它還通過原型鏈繼承了的屬性方法。輸出當對象和數值進行運算的時候會對對象進行隱式轉換,就變成了所以計算結果的長度為。所以推薦大家使用代替大括號生成對象。

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

這種方式不好地方是,{} 在某些時候會進行隱式類型轉型,還有當我們使用 for...in 時候會遍歷原形鏈上的屬性方法,如下面的代碼所示。

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

當對象和數值進行運算的時候會對對象進行隱式轉換,{} + 1 就變成了 [object Object] + 0 所以計算結果的長度為 16。

for...in 進行遍歷的時候也會遍歷原型鏈可枚舉的屬性,所以當遍歷的時候還需要使用 hasOwnProperty 進行過濾操作。

Object.create(null) 沒有這樣的問題,是一個沒有繼承 Object 原型的屬性和方法的純對象。

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) 會有性能問題(比 {} 慢了很多倍),而現在已經不是問題了,而且更快了。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89982.html

相關文章

  • 創建對象的4種方式

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

    seanlook 評論0 收藏0
  • ES6學習筆記2—各擴展

    摘要:字符串的擴展字符的表示法允許采用形式表示一個字符,其中表示字符的碼點。返回布爾值,表示參數字符串是否在源字符串的頭部。使用和這兩個常量,用來表示這個范圍的上下限。對于那些無法用個二進制位精確表示的小數,方法返回最接近這個小數的單精度浮點數。 字符串的擴展 字符的 Unicode 表示法 JavaScript 允許采用uxxxx形式表示一個字符,其中xxxx表示字符的 Unicode 碼...

    Zoom 評論0 收藏0
  • ES6(3)- 各種類型的擴展(數組、對象

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

    weapon 評論0 收藏0
  • JavaScript類的寫法

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

    OnlyLing 評論0 收藏0
  • ES5(下)

    摘要:命令命令的作用,就是執行構造函數,返回一個實例對象。實例對象相當于創建一個空的構造函數,將其屬性指向參數對象,從而實現讓該實例繼承的屬性。 這是ES5的入門篇教程的筆記,網址:JavaScript教程,以下內容中黑體表示大標題,還有一些重點;斜體表示對于自身,還需要下功夫學習的內容。這里面有一些自己的見解,所以若是發現問題,歡迎指出~ 實例對象與new命令面向對象編程是目前主流的編程范...

    includecmath 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<