-
prototype
是指原型對(duì)象, 一個(gè)函數(shù)所有的實(shí)例都會(huì)指向它
- 非標(biāo)準(zhǔn)實(shí)例屬性
__proto__
可從實(shí)例中訪問prototype
- 一般來說:
Funtion Foo() {
this.prototype.xxx = xxx; // 這樣雖然能修改原型, 但每次new一次Foo, 都會(huì)執(zhí)行一次.
}
Foo.prototype.xxx = xxx; // 這樣就只會(huì)執(zhí)行一次, 靠譜, 但每個(gè)屬性都要打這么長
Foo.prototype = { // 這種效果和上面的一樣, 但寫法更簡潔
constructor: Person, // 不加這句的話, construtor將不會(huì)再指向Foo, 雖然沒什么大問題, 但還是加上為好
xxx: xxx,
xxx, xxx
}
- 它自身有個(gè)
constructor
屬性指向函數(shù)本身.
- 原型模式主要是用來解決屬性/方法共享的, 若是不同實(shí)例間并不需要優(yōu)化這個(gè), 那直接在Funtion里面添加this的屬性也沒什么不妥.
- 實(shí)例中原型僅指向原型, 而不是指向構(gòu)造函數(shù).
- 重寫原型對(duì)象后, 會(huì)切斷之前所創(chuàng)建對(duì)象與新原型之間的聯(lián)系.
function Person() {}
var friend = new Person();
Person.prototype = {
constructor: Person,
name: 'df',
age: 29,
sayName: function () {
alert(this.name);
}
}
friend.sayName(); // 錯(cuò)誤
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。