對JS的prototype的粗淺理解

  • prototype是指原型對象, 一個(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ù).
  • 重寫原型對象后, 會(huì)切斷之前所創(chuàng)建對象與新原型之間的聯(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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 3,086評論 4 14
  • 基本概念 先用構(gòu)造函數(shù)創(chuàng)建一個(gè)對象 在這個(gè)例子中,Person 就是一個(gè)構(gòu)造函數(shù),我們使用 new 創(chuàng)建了一個(gè)實(shí)例...
    杰哥長得帥閱讀 592評論 0 2
  • 特別說明,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 1,266評論 0 4
  • 1. 王小波與李銀河的“兩地書”,以及李銀河深情懷念王小波的三篇文章,還加上兩人的“媒人”《綠毛水怪》,構(gòu)成了《愛...
    夢槑閱讀 609評論 2 3
  • 擲君紅豆一顆, 衣袖上寫的名字, 遲遲不來。 目光所及的地方, 那人那眼嘴角微勾, 穿葉拂花染上晨曦, 白色襯衫騎...
    阿夕想退休閱讀 283評論 1 6

友情鏈接更多精彩內(nèi)容