図プロトタイプ二プロトタイプチェーンを説明しました


上記画像のHuゆうブログは、低減されている。この図は、以下の特性を伴うプロトタイプチェーン、と説明することができます。

  • prototypeこの関数の例を使用して生成された場合、各関数は、オブジェクトへのポインタであるプロトタイプ(原型)性質を有し、オブジェクトが含む特定のタイプのすべてのインスタンスで共有することができるプロパティとメソッドを使用することですこのオブジェクトを呼び出すと、すべてのインスタンスのプロトタイプです。
  • __proto__:すべてのオブジェクトが持っている__proto__オブジェクトのプロパティにアクセスするとき、オブジェクトがプロパティ内にある場合は、プロトタイプチェーンを実装するために使用されるプロパティを、見つけるまたはnullために最後にプロトタイプチェーンを検索することで、存在しません。
  • constructor:各プロトタイプは、関連するコンストラクタを指すコンストラクタ性を有します

私たちは、次のコードでそれを確認することができます。

function Person () {

}

let person = new Person()
console.log(person.__proto__ === Person.prototype) // true
console.log(Person.prototype.constructor === Person) // true
console.log(Person.prototype.__proto__ === Object.prototype) // true

私たちは自分自身を描いこの絵の下には、主な問題は、オブジェクトのプロトタイプの解析と機能である:
すべてのオブジェクトは、Object()コンストラクタ関数であり、すべての関数宣言/関数式は、関数()コンストラクタです例えば、被写体()コンストラクタは、順番に、以下の関係プロトタイプであるインスタンスのコンストラクタ関数()、です。

なお、()関数__proto__プロトタイプオブジェクトへのその直接のプロパティ。
私たちは、この絵を検証するために、次のコードを使用することができます。それは、ブラウザの環境や環境の結果では、同じノードであります

console.log(Object.__proto__ === Function.prototype) // true
console.log(Function.__proto__ === Function.prototype) // true
console.log(Function.prototype.__proto__ === Object.prototype) // true
console.log(Object.prototype.__proto__ === null) // true

おすすめ

転載: www.cnblogs.com/cmk1018/p/11347442.html