JavaScriptはインスタンス属性、プロトタイプ属性を検出します.

2291 ワード

0.前提
  • JavaScriptオブジェクトの属性は二つの存在形態に分けられます.一つは存在例であり、もう一つはプロトタイプオブジェクトの中にあります.
  • 上記により、属性を検出すると4つの場合があります.
  • は、実例にも原型オブジェクトにも存在しない
  • である.
  • の存在例には、プロトタイプオブジェクトが存在しない
  • が存在しない例では、プロトタイプオブジェクト
  • が存在する.
  • 例にもプロトタイプオブジェクト
  • が存在する.
    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に戻ります.