當你想用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)