JavaScriptにおける構造関数とプロトタイプチェーンの関係の詳細
1344 ワード
Javascriptにはクラスの概念が存在しません.そのclass概念は構造関数とプロトタイプチェーンによって実現されます.
1.コンストラクタ:オブジェクト作成時の初期化対象は、常にnewキーと一緒に現れます.
コンストラクタには以下の特徴があります. 1、コンストラクタ内のthisは、現在のインスタンスオブジェクトを指す. 、newキーワードを用いて現在のオブジェクトを具体化する. 、コンストラクタの頭文字は大文字で、普通の関数を区別します. 、インスタンスオブジェクトは、構造関数内の属性および方法を継承することができる.ただし、同じオブジェクトのインスタンスの間では属性を共有できません. 2.原型(prototype):オブジェクトの属性継承を実現します.javascriptの対象はプロトによってプロトタイプのオブジェクトを指し、Object._u uプロト.訪問します
3.構造関数と原型との連絡:
コンストラクタの_u uプロト.オブジェクトを指す;プロトタイプのconstructorは構造関数Functionを指します.プロトタイプのプロトタイプ.プロト.イコールObject.プロト.実例のconstructor.prototypeは原型を指します.実例のconstructorは構造関数を指します.
引用凡例:
![14608155881][1]
1.コンストラクタ:オブジェクト作成時の初期化対象は、常にnewキーと一緒に現れます.
コンストラクタには以下の特徴があります.
3.構造関数と原型との連絡:
function Demo(){
}
var demo = new Demo()
var data= demo.prototype = function(){
}
console.log(demo.__proto__)
console.log(data.constructor )
console.log(data.prototype.__proto__)
console.log(demo.constructor.prototype)
console.log(demo.constructor)
:
{constructor: ƒ}constructor: ƒ Demo()__proto__: Object
ƒ Function() { [native code] }
{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
{constructor: ƒ}
ƒ Demo(){ }
以上の出力結果から、コンストラクタの_u uプロト.オブジェクトを指す;プロトタイプのconstructorは構造関数Functionを指します.プロトタイプのプロトタイプ.プロト.イコールObject.プロト.実例のconstructor.prototypeは原型を指します.実例のconstructorは構造関数を指します.
引用凡例:
![14608155881][1]