2018-01-08 javascriptプロトタイプチェーンについての考え
1542 ワード
原型チェーン prototype prototypeの検証方法はいくつかあります.
prototypeを理解する http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapulation. prototypeを理解する
1>isPrototypeOf()この方法は、あるproptotypeオブジェクトとあるインスタンスとの関係を判断するために用いられる.
各インスタンスオブジェクトには、ある属性がローカル属性なのか、それともプロトタイプオブジェクトからの属性なのかを判断するためのハスOwnProperty()方法があります.
in演算子は、ローカル属性ではなく、あるインスタンスに属性が含まれているかどうかを判断するために使用されてもよい.
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()
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]);
}