Я вижу, что многие люди делают это
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" );
}
}
Мой вопрос, а не тестирование .hasOwnProperty
каждый раз, когда вы хотите использовать Object
в качестве хэша, почему бы просто не установить .__proto__
null
на объекте?†
hash.prototype = null;
hash.__proto__ = null;
for ( var v in hash ) {
// Do not print property `foo`
console.log( v + " is a hash property" );
}
Мне стало известно, что __proto__
нестандартно.Это все еще не отвечает на вопрос, хотя ...
var foo = Object.create (null);Object.getPrototypeOf (foo);
Это не может быть оригинальный вопрос, но я не могу найти что-нибудь об изменении __proto__
на null
, чтобы устранить недостатки наличияпроверить на наследство?Что плохого в этом подходе, кажется, делает код быстрее (не нужно проверять свойства Object
) и чище?
† И свойство .prototype
, если вы планируете сделать его будущим потомком.