2018-01-08 javascriptプロトタイプチェーンについての考え

1542 ワード

原型チェーン
  • prototype
  • prototypeの検証方法はいくつかあります.
    prototypeを理解する
  • http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapulation.
  • prototypeを理解する
  • function Cat(name,color){
            //    
        this.name = name;
        this.color = color;
    
    }
    
    //    
    
    Cat.prototype.type = "    ";
    
    Cat.prototype.eat = function(){
       alert("   ")
    };
    
    
    はその後、インスタンス
    var cat1 = new Cat("  ","  ");
    var cat2 = new Cat("  ","  ");
    alert(cat1.type); //     
    cat1.eat(); //    
    
    を生成する.この場合、すべてのインスタンスのtype属性とeat()方法は、同じメモリアドレスであり、prototypeオブジェクトを指すので、動作効率が向上する.
    alert(cat1.eat == cat2.eat); //true
    
    prototypeの検証方法はいくつかあります.
    1>isPrototypeOf()
  • この方法は、あるproptotypeオブジェクトとあるインスタンスとの関係を判断するために用いられる.
  •   alert(Cat.prototype.isPrototypeOf(cat1)); //true
    
      alert(Cat.prototype.isPrototypeOf(cat2)); //true
    
    
    2>ハスOwnProperty()
    各インスタンスオブジェクトには、ある属性がローカル属性なのか、それともプロトタイプオブジェクトからの属性なのかを判断するためのハスOwnProperty()方法があります.
      alert(cat1.hasOwnProperty("name")); // true
    
      alert(cat1.hasOwnProperty("type")); // false
    
    
    3>in演算子
    in演算子は、ローカル属性ではなく、あるインスタンスに属性が含まれているかどうかを判断するために使用されてもよい.
      alert("name" in cat1); // true
    
      alert("type" in cat1); // true
    
    in演算子は、あるオブジェクトのすべての属性を巡回するためにも使用できます.
      for(var prop in cat1) {
          alert("cat1["+prop+"]="+cat1[prop]);
      }