我看到很多人在做這個通過Object w/prototype null的ECMAScript關聯數組?
Object.prototype.foo = 'HALLO';
var hash = {baz: 'quuz'};
for (var v in hash) {
// Do not print property `foo`
if (hash.hasOwnProperty(v)) {
console.log(v + " is a hash property");
}
}
我的問題是,而不是爲什麼不設置.__proto__
到null
對象上要使用的Object
作爲哈希每次測試.hasOwnProperty
? †
hash.prototype = null;
hash.__proto__ = null;
for (var v in hash) {
// Do not print property `foo`
console.log(v + " is a hash property");
}
已經引起我注意的是__proto__
是非標準的。儘管如此,這仍然不能回答這個問題。 Object.getPrototypeOf(foo);
這不可能是一個原始的問題,但我找不到任何約改變__proto__
到null
消除不必檢查繼承的缺點?這種方法有什麼問題,似乎使代碼更快(不必檢查Object
的屬性)和更清潔?
†而.prototype
財產,如果你打算將它的未來的孩子。
就像我說的,我很猶豫,說我先想到了它。只是我無法找到其他人討論它。 – 2011-06-04 16:51:25