プロトタイプとは何ですか?
プロトタイププロパティを作成する機能があるいったんそのプロトタイプオブジェクト、プロトタイプオブジェクトであるオブジェクトを指します。
概要:プロトタイプはそのプロトタイプオブジェクトオブジェクトです。
プロトタイプの役割は次のとおり共有方法の
コンストラクタオブジェクトがインスタンス化されるとき、オブジェクトの各インスタンスは、プロパティおよびメソッドコンストラクタのためのオープンスペースが作成され、次のように
var Person = function(name,age){
this.name = name;
this.age = age;
this.eat = function(){
console.log("吃饭")
}
}
var p1 = new Person()
var p2 = new Person()
P1、P2は、このように、コードの冗長性を引き起こして二回作成されます食べて()メソッド、および同じ論理機能を、唯一異なるアドレスを持つメモリを占有し、パフォーマンスに影響を与える
ような問題を解決するために、公共の場で書き込む方法プロトタイプオブジェクト、すべてのオブジェクトインスタンス化機能が直接アクセスできるメソッドのプロトタイプオブジェクト
var Person = function(name,age){
this.name = name;
this.age = age;
}
Person.prototype.eat = function(){
console.log("吃饭")
}
console.log(Person)
構造と機能の関係、プロトタイプオブジェクト三のオブジェクトインスタンス
var Person = function(name,age){
this.name = name;
this.age = age;
}
Person.prototype.eat = function(){
console.log("吃饭")
}
var ws = new Person("小花",5)
上記の例のPersonコンストラクタ:
__proto__何をここで説明し、コンストラクタ関数:
すべての関数がプロトタイププロトタイプオブジェクトを持っているように、各オブジェクトは、オブジェクトのプロトタイプと呼ばれる__proto__を、持っています。これは、プロトタイプオブジェクトのコンストラクタを指します。
プロトタイプかをコンストラクタ関数を有する__proto__は、コンストラクタに戻る意味
グラフから分かります。
console.log(Person.prototype.constructor === Person) //true
console.log(ws.__proto__ === Person.prototype) //true
console.log(ws.__proto__.constructor === Person) //true
プロトタイプチェーン
これは、図から見られています:
console.log(Person.prototype.__proto__ === Object.prototype) //true
console.log(Object.prototype.constructor === Object) //true
console.log(Object.prototype.__proto__) //null
ルールオブジェクトはプロトタイプチェーンに沿ってメンバーを見つけることです検索
オブジェクトのプロパティまたはメソッドにアクセスする場合:
- まず、オブジェクト自体を見つける見つけるための出口がある、またはプロトタイプチェーン・ルックアップ(__proto__プロトタイププロトタイプオブジェクトポイント)に沿って何もありません
- そして、そこに見つける撤退、またはプロトタイプチェーンに沿って見つけるだろう、プロトタイプオブジェクトのコンストラクターがありませんでした見つけます
- ルックObjectコンストラクタのプロトタイプは、そうでない場合は検索NULLの終わりまで、プロトタイプチェーンに沿って見つけることが出て、そこではありません