JavaScriptはインスタンス属性、プロトタイプ属性を検出します.
2291 ワード
0.前提 JavaScriptオブジェクトの属性は二つの存在形態に分けられます.一つは存在例であり、もう一つはプロトタイプオブジェクトの中にあります. 上記により、属性を検出すると4つの場合があります. は、実例にも原型オブジェクトにも存在しない である.の存在例には、プロトタイプオブジェクトが存在しない が存在しない例では、プロトタイプオブジェクト が存在する.例にもプロトタイプオブジェクト が存在する.
1.hasOwn Prottype()
hasOwnProttype()は文字列書式の属性名を受け取り、インスタンス自体がその属性が存在する場合(ケース2/ケース4)はtrueに戻ります.そうでなければfalseに戻ります.
in操作符は、属性がインスタンス自体にあるか、それとも原型オブジェクトにあるかに関わらず、trueに戻ります.そうでなければfalseを返します.
in操作子とハスOwnProperty()を組み合わせると、プロトタイプに指定された属性があるかどうかをユーザー定義関数で検出することができます.
1.hasOwn Prottype()
hasOwnProttype()は文字列書式の属性名を受け取り、インスタンス自体がその属性が存在する場合(ケース2/ケース4)はtrueに戻ります.そうでなければfalseに戻ります.
functino Person() {}
Person.prototype.name = 'apple'; var person1 = new Person(); var person2 = new Person(); person1.name = 'banana'; console.log(person1.hasOwnPrototype(name)); //true console.log(person2.hasOwnPrototype(name)); //false
2.in操作子in操作符は、属性がインスタンス自体にあるか、それとも原型オブジェクトにあるかに関わらず、trueに戻ります.そうでなければfalseを返します.
console.log('name' in person1); //true console.log('name' in person2); //true
3.原型が存在する属性を検出するin操作子とハスOwnProperty()を組み合わせると、プロトタイプに指定された属性があるかどうかをユーザー定義関数で検出することができます.
function hasPrototypeProperty(object, name) { return !object.hasOwnPrototype(name) && (name in object); } console.log(hasPrototypeProperty(person1, 'name')); //false console.log(hasPrototypeProperty(person2, 'name')); //true
プロトタイプに属性があります.trueに戻ります.そうでないとfalseに戻ります.