ホームページ  >  記事  >  ウェブフロントエンド  >  jsプロトタイプチェーン原理図解説_javascriptスキル

jsプロトタイプチェーン原理図解説_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 17:51:591217ブラウズ

ECMAscript の発明者は、継承されたプロパティを維持しながら言語を簡素化するために、このリンク リストを設計しました。 。
データ構造におけるリンク リストについて学習したことがありますか? リンク リストには、次の構造を指すポインターに相当する位置があります。

したがって、プロトタイプを定義するときは常に、インスタンスの __proto__ を構造体にポイントすることと同じであり、そのポイントされた構造体はインスタンスと呼ばれます。

テキストは少し複雑です。写真を見て話してください

コードをコピーします コードは次のとおりです

var foo = {
x: 10,
y: 20
};

__proto__ を指定しない場合、foo はそのような属性も予約します。Figure 1. A basic object with a prototype.

明確なポインターがある場合、リンクされたリストはリンクされます。

明らかに、以下の図の b と c は a の属性とメソッドを共有し、同時に独自のプライベート属性を持っています。

__proto__ にもデフォルトでポインティングがあります。これは最上位の object.prototype を指しており、object.prototype の __proto__ は空です。



コードをコピー コードは次のとおりです: var a = {
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__ の性質を理解します。 。コンストラクターをもう一度理解しましょう。

プロトタイプが定義されると、プロトタイプ オブジェクトが構築され、このプロトタイプ オブジェクトは、プロトタイプを構築する関数のプロトタイプ メソッドに格納されます。 🎜> コードをコピーします Figure 2. A prototype chain.


コードは次のとおりです。


function Foo(y){
this.y = y ; Foo.prototype.x = 10; Foo.prototype.calculate = function(z){ return this.x this.y z }; >var b = new Foo (20);
alert(b.calculate(30));


【参考資料】


http://dmitrysoshnikov.com/ecmascript/javascript-the-core/
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。