私はこれをやっている人をたくさん見ます
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
使用するたびにテストするのではなく、なぜオブジェクトにtoを設定しないのですか? †</p>
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
将来その子を作成する予定がある場合は、そのプロパティ。