javascriptの中のプロトタイプの鎖は深く理解します。


プロトタイプチェーンを明らかにするにはまずfunctionのタイプを明らかにします。javascriptには類の概念がなく、全部関数です。だから、関数式のプログラミング言語です。クラスには重要な特性があります。つまり、その構造関数に基づいてテンプレートとしてオブジェクトを作成することができます。javascriptでは、関数は2つの機能の第一、一般関数として第二、プロトタイプのオブジェクトとしての構造関数もnew()について説明します。例を見てみます。
 
function a(){
this.name = 'a';
}
は、関数を作成すると、何が発生しますか?第一に、関数オブジェクトを作成します。つまり、a自身第二に、プロトタイプオブジェクトを作成します。@a(@で表します。)第三に、関数オブジェクトにプロトタイプのポインタがあります。これは対応するプロトタイプオブジェクトを指します。ここで@a第四、@aオブジェクトの中に、construtorポインタがあります。その構造関数を指します。ここはaを指しますhttp://img.blog.csdn.net/20140222125611500?watermark/2/text/aHR 0 cDovL 2 Jsb 2 cuY 3 Nkbi 5 uZXvbGpsMTU 3 MDEx/font/5 a 6 L 2 L 2 T/fontsize/400/fill/I 0 JBQFMA=/dissolve/70/gravity/SouthEastという属性は一体何ですか?prototype属性は現在の関数がコントロールできる範囲を表しています。ここでaは@aのプロトタイプのオブジェクトの構造関数です。ですから、このような書き方が見られます。newとは、プロトタイプポインタを介してプロトタイプオブジェクトの中のコンストラクタを呼び出して新しいオブジェクトを作成する例です。prototypeがオブジェクト内の属性を指すように修正したことは、テンプレートとして作成されたすべてのインスタンスに影響を及ぼし、
 
function a(){
this.name = 'a';
}

var a1 = new a();
の結果を検証することができます。1なぜa 1オブジェクトが直接age属性にアクセスできるのですか?a 1対象の中には、age属性が定義されていません。それはすべての実例に引用があるからです。プロトfirfoxでは、chromeで直接アクセスできます。ieはサポートしません。)このプロトタイプを指しています。ここで@aを指しています。
 
function a(){
this.name = 'a';
}

var a1 = new a();
a.prototype.age = 1;
alert(a1.age);
の結果です。trueは属性を訪問する時、まずa 1オブジェクトの中から探します。ないと、_に沿って移動します。プロト指し示す対象の中を探しに行きます。ここで@aの中を探します。見つけたら値に戻ります。見つけられなかったらundefinedに戻ります。成語で説明します。これでプロトタイプチェーンの意味が出てきました。プロトタイプの対象も一つあります。プロト針は、もう一つのプロトタイプを指して、次から次へとプロトタイプチェーンを形成します。Object.prototypeは最上階のプロトタイプですので、Object.prototypeの属性を修正したら、すべての対象に影響を与えます。セグメントコード
 
function a(){
this.name = 'a';
}

var a1 = new a();
alert(a1._proto_ == a.prototype)
を見ると、bのプロトタイプがaの一例に向けられていることを示し、bの例もaの属性にアクセスすることができる。これはjavascriptの継承です。b.prototypeはaの一例を指しています。a.prototypeを直接指すのではありません。
 
function a(){
this.name = 'a';
}

function b(){
this.age = 1;
}

b.prototype = new a();
alert(new b().name);
上記のようにp.prototypeの属性を修正すると、aのプロトタイプも変更され、かなりの結果として、子類が親類を修正し、子類と親類の属性が混在していることは明らかに不適切である。言い換えれば、bも@aのコンストラクタになりました。a、bはフラットレベルの関係になりました。次の定義ができます。関数a継承関数b、すなわち関数aを関数bの原型とする構成関数の一例です。構造関数の中で宣言されている属性は関数a自身のものです。プロトタイプの例では、属性はbの
 
b.prototype = new a.prototype;
を継承しています。これはjqueryのソースコードです。jqueryを使う時は、newキーワードを使っていません。どのようにオブジェクトを作成しますか?上記の知識で説明できます。jqueryはここでは一般関数の呼び出しだけで、jqueryプロトタイプのもう一つのコンストラクターが作成したオブジェクト、つまりnew init()に戻りました。