そして、内のJavaScriptのプロトタイプチェーン・オブ・コンセプトプロトタイプと__proto__の違い

問題

JS初心者の学生、常にそれが、混乱の中に、__proto__の文字列からコンソール印刷で探しているものは、プロトタイプのJSを取得します。

例えば、私は、人を定義インスタンスpを作成し、例を印刷します。

function Person(){}
var p = new Person();
console.log(p)

ここに画像を挿入説明
オブジェクトpのPersonインスタンスをプリントアウトし、描画、
このオブジェクトは__proto__プロパティを持って、この事は何ですか?
__proto__プロパティの下では、別のconstructorプロパティ__proto__プロパティ。
結果は人()が印刷されている理由は何コンストラクタですか?
他にどのような__proto__こと?

上の質問に答えるために、我々は概念のいくつかを理解する必要があります。

プロトタイプ

プロトタイプ

まず第一に、JSを説明し、物事はオブジェクトです。

各オブジェクトは、プロトタイプ関数(関数オブジェクト固有属性)の性質を有し、このプロパティは、オブジェクトへの参照であり、オブジェクトはすべてのインスタンスによって共有されるプロパティとメソッドを達成することです。私たちは、このオブジェクトの別名プロトタイプオブジェクトと呼ばれる入れ明示的なプロトタイプ

各オブジェクトは、__proto__の性質を有すると称されることも暗黙のプロトタイプ、プロトタイプオブジェクトは、オブジェクトのコンストラクタ関数(プロトタイプ)を作成する暗黙のプロトタイプを指します。

constructor

プロトタイプオブジェクトのコンストラクタ関数は、元のコンストラクタのための基準点であるという特性を有しています。

関係

どのように我々はトップの概念を理解し、それらの間の接続は何ですか?

我々は、p .__ proto__プロパティをプリントアウトしたい場合があります
ここに画像を挿入説明
、あなたが見ることができるオブジェクトをプリントアウトし、オブジェクトの内部には、プロパティのコンストラクタを持っています。

それはどのようなコンストラクタで、次のように印刷する:
ここに画像を挿入説明
あなたが見ることができ、それをプリントアウトしたPersonコンストラクタ自体を代表する関数です。

今度はプロトタイプPerson.prototype人コンストラクタ印刷
し、そのプロトタイプのプロパティのコンストラクタを:
ここに画像を挿入説明
グラフから、我々は描画することができます。

オブジェクトp点の1例は、属性__proto__プロトタイプオブジェクトはPerson.prototypeにそのコンストラクタを作成することである持っています。
2.プロトタイプオブジェクトのコンストラクタPerson.prototype人は、コンストラクタコンストラクタ自体を属性。

我々は確認することができます。
ここに画像を挿入説明

しかし、彼らはすべてのオブジェクト以来、__proto__プロパティを持っていること、一部の学生を混同している場合があります
、それを監督コンストラクタ者()プロパティ__proto__こと?
もちろん、それはコンストラクタへのプロトタイプオブジェクトへのポインタです。
コンストラクタは、関数()であるため、ここでFunction.prototypeを__proto__指します。

そのプロトタイプオブジェクトは、その属性を指向誰?__proto__オブジェクトである
。同様に、それはプロトタイプオブジェクトのコンストラクタを指し、それのObject.prototype。

ここでは、プロトタイプチェーンの概念ということを言及する必要があります。

プロトタイプチェーン

プロトタイプは、JSを参照すると、チェーン機構であり、各オブジェクトは、そのプロトタイプオブジェクトのコンストラクタを指し、__proto__の性質を有しています。プロトタイプオブジェクトは、オブジェクトが空のプロトタイプオブジェクト(ヌルに__proto__ Object.prototpye属性のオブジェクトのプロトタイプオブジェクト)になるまで、そう層上方こと、したがって、__proto__プロパティプロトタイプオブジェクトのプロトタイプオブジェクト指向、オブジェクトです。

したがって、例えば、プロトタイプチェーンとの間の関係は、以下:
P .__ proto__点Person.prototype、
Person.prototype .__ proto__のObject.prototypeに向けられている、
Object.prototpyeヌル点.__ proto__

プロトタイプチェーンのトップの一例との間の関係を理解するために、我々は理解高めるために絵を描きます:

ここに画像を挿入説明
これまでのところ、問題は心の上部には、まだ答えを持っているではありません。

概要

1.各オブジェクトは、__proto__プロパティを有し、それは、プロトタイプオブジェクトのコンストラクタを作成するポイント。
役割:プロトタイプベースの継承を実装するために使用されるプロトタイプチェーンを構成しています。
2.関数__proto__プロパティに加えて、機能のプロトタイプオブジェクトポインタのプロトタイプ性があります。
役割:プロトタイプベースの継承と財産を共有するため。
だから、あなたは、この文言のような多くの場所で見ているだろう。

function Person(){}
Person.prototype.hello = function(){
    console.log("hello")
}

コードはトップ、作成されたオブジェクト人のすべてのインスタンスを共有することができるハロー方法を表します。
3.プロトタイプオブジェクトのコンストラクタは、コンストラクタポイント自体を属性コンストラクタを持っています。

PS:いいえ世間の注目を歓迎:「SHOULDそよ風」の学習の交換をして。

おすすめ

転載: www.cnblogs.com/starry-skys/p/11911568.html