【JavaScriptプログラミング】プロトタイプ、プロトタイプチェーン
4473 ワード
一、原型
隠れ家の原型
オブジェクトは、属性
各オブジェクトは、その内部で属性の一つであるプロトタイプ属性を初期化します.この属性は、オブジェクトを指すポインタです.このオブジェクトの用途は、すべてのインスタンスに共有される属性と方法を含みます.
トラック
プロトタイプオブジェクトには、
関係
方法
説明
ハスOwnProperty()
自身の属性を検索
instance of
オブジェクト(例)と構造関数はプロトタイプチェーンに関係がありますか?
二、プロトタイプチェーン
定義私たちがオブジェクトの属性を訪問した時、自身にxxx属性があれば、それにアクセスする(固有の属性). もしないならば、 は、このように再帰的に検索し、xxx属性が見つかるまで、またはプロトタイプチェーントップ 原型チェーン全体になかったらundefindに戻ります. 私たちはこのような原型層を通して連結された関係をプロトタイプチェーンと呼びます. アナログプロトタイプ
隠れ家の原型
オブジェクトは、属性
__proto__
を有し、オブジェクトの暗黙的なプロトタイプは、オブジェクトを構成する構造関数のプロトタイプを指しています.これは、インスタンスが構造関数プロトタイプにおいて定義された属性および方法にアクセスできることを保証します.Object.getPrototypeOf()
プロトタイプのプロパティ各オブジェクトは、その内部で属性の一つであるプロトタイプ属性を初期化します.この属性は、オブジェクトを指すポインタです.このオブジェクトの用途は、すべてのインスタンスに共有される属性と方法を含みます.
トラック
プロトタイプオブジェクトには、
prototype
という属性があります.この属性には、元のコンストラクターに戻るためのポインタが含まれています.関係
instance.constructor.prototype = instance.__proto__
判断する方法
説明
ハスOwnProperty()
自身の属性を検索
instance of
オブジェクト(例)と構造関数はプロトタイプチェーンに関係がありますか?
二、プロトタイプチェーン
定義
constructor
属性を通じて(通って)その原型の鎖の前の段階の原型の対象を探し当てて、それがXXX属性があるかどうかを見ます.__proto__
オブジェクトまで.var Shape = {
getArea:function() {
return "area: "+this.area;
}
};
var Retangle = {
getEdge:function() {
return "edge: "+this.edge;
}
};
var retangleIns = {
area : 20,
edge : 4
};
// , 3 :
// Shape
retangleIns.__proto__ = Retangle;
Retangle.__proto__ = Shape;
// ,getArea getEdge
console.log(" ,retangleIns.getArea() = " + retangleIns.getArea());
console.log(" ,retangleIns.getEdge() = " + retangleIns.getEdge());