ECMAscript の発明者は、継承されたプロパティを維持しながら言語を簡素化するために、このリンク リストを設計しました。 。
データ構造におけるリンク リストについて学習したことがありますか? リンク リストには、次の構造を指すポインターに相当する位置があります。
したがって、プロトタイプを定義するときは常に、インスタンスの __proto__ を構造体にポイントすることと同じであり、そのポイントされた構造体はインスタンスと呼ばれます。
テキストは少し複雑です。写真を見て話してください
var foo = {
x: 10,
y: 20
};
__proto__ を指定しない場合、foo はそのような属性も予約します。
明確なポインターがある場合、リンクされたリストはリンクされます。
明らかに、以下の図の b と c は a の属性とメソッドを共有し、同時に独自のプライベート属性を持っています。
__proto__ にもデフォルトでポインティングがあります。これは最上位の object.prototype を指しており、object.prototype の __proto__ は空です。
x: 10、
計算: function (z) {
return this.x this.y z
}
};
var b = {
y: 20,
__proto__: a
};
var c = {
y: 30,
__proto__: a
}// 継承されたメソッド
b を呼び出します。 .calculate( 30); // 60
属性リンク ポインター __proto__ の性質を理解します。 。コンストラクターをもう一度理解しましょう。
プロトタイプが定義されると、プロトタイプ オブジェクトが構築され、このプロトタイプ オブジェクトは、プロトタイプを構築する関数のプロトタイプ メソッドに格納されます。 🎜> コードをコピーします
コードは次のとおりです。
function Foo(y){
alert(b.calculate(30));
【参考資料】
http://dmitrysoshnikov.com/ecmascript/javascript-the-core/