假如你僅僅是想要用對象保留數據,請用Object.create(null),而不是對象字面量

當你想用javascript對象作為一個hash映照(完整用來貯存數據),你應當按以下體式格局來建立它。

const map = Object.create(null); 

當建立一個映照運用對象字面量時(const map = {}),默許情況下,這個映照從這個對象繼續屬性。這和 Object.creatd(Object.prototype)建立時相稱的。

然則經由過程 Object.create(null),我們明白指定 null 作為它的屬性。因而它相當於沒有屬相,以至沒有constructor, toString, hasOwnProperty等要領。因而你能夠隨便運用這些鍵值在你的數據結構中,只需你須要。

const dirtyMap = {};
const cleanMap = Object.create(null);

dirtyMap.constructor    // function Object() { [native code] }

cleanMap.constructor    // undefined

// Iterating maps

const key;
for(key in dirtyMap){
  if (dirtyMap.hasOwnProperty(key)) {   // Check to avoid iterating over inherited properties.
    console.log(key + " -> " + dirtyMap[key]);
  }
}

for(key in cleanMap){
  console.log(key + " -> " + cleanMap[key]);    // No need to add extra checks, as the object will always be clean
}

標註:假如你僅僅是想要用對象保留數據,發起這類體式格局:

const map = Object.create(null)
    原文作者:Pengxw
    原文地址: https://segmentfault.com/a/1190000015357610
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞