亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

使用對(duì)象字面量重寫prototype需要注意的問題

simon_chen / 3320人閱讀

摘要:前言為了方便,大部分人都是直接使用字面量來初始化對(duì)象,我們知道原型對(duì)象是創(chuàng)建函數(shù)自帶的,如果使用字面量來初始化相當(dāng)于重寫原型對(duì)象,這樣就會(huì)導(dǎo)致一些如下問題。

前言

為了方便,大部分人都是直接使用字面量來初始化對(duì)象,我們知道原型對(duì)象是創(chuàng)建函數(shù)自帶的,如果使用字面量來初始化相當(dāng)于重寫原型對(duì)象,這樣就會(huì)導(dǎo)致一些如下問題。

正文

問題:
重寫之后,原型對(duì)象的constructor不在指向原型對(duì)象所在的函數(shù)

function demo1 () {
}
demo1.prototype = {
    show: function() {console.log("execute success!")}
}
demo1.prototype.constructor不再指向demo1

既然有了問題,那自然有解決問題的方法

方法就是讓構(gòu)造函數(shù)重新指向原先得對(duì)象
function demo1 () {}
demo1.prototype = {
    constructor: demo1,
    show: function() {console.log("execute success!")}
}

但是這樣寫又有了新問題,[[Enumerable]]默認(rèn)是true,而原先的構(gòu)造函數(shù)默認(rèn)是false,這時(shí)候我們可以修改對(duì)象的屬性,修改對(duì)象的屬性自然要用到強(qiáng)大的defineProperty啦

function demo1 () {}
demo1.prototype = {
    show: function() {console.log("execute success!")}
}
Object.defineProperty(demo1.prototype, "constructor", {
    enumerable: false,
    value: demo1
})

好啦,大功告成,就是這樣啦

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/96594.html

相關(guān)文章

  • [js高手之路]使用原型對(duì)象(prototype)需要注意地方

    摘要:原型對(duì)象的共享特性,可以很方便的為一些內(nèi)置的對(duì)象擴(kuò)展一些方法,比如,數(shù)組去重復(fù)但是,不要隨便往內(nèi)置的對(duì)象上面擴(kuò)展方法,在多人協(xié)作開發(fā),很容易產(chǎn)生覆蓋,以及污染 我們先來一個(gè)簡(jiǎn)單的構(gòu)造函數(shù)+原型對(duì)象的小程序 1 function CreateObj( uName, uAge ) { 2 this.userName = uName; 3 ...

    chnmagnus 評(píng)論0 收藏0
  • JavaScript面向對(duì)象程序設(shè)計(jì)——“創(chuàng)建對(duì)象注意要點(diǎn)

    摘要:所以,可以創(chuàng)建自定義的構(gòu)造函數(shù),從而定義自定義對(duì)象類型的屬性和方法。如對(duì)于構(gòu)造函數(shù)原型屬性以及實(shí)例之間的關(guān)系,參見高級(jí)程序設(shè)計(jì)一書中第章節(jié)。穩(wěn)妥構(gòu)造函數(shù)模式穩(wěn)妥對(duì)象,指的是沒有公共屬性,且其方法也不引用的對(duì)象如 創(chuàng)建對(duì)象 Object 構(gòu)造函數(shù)或?qū)ο笞置媪慷伎梢杂脕韯?chuàng)建單個(gè)對(duì)象。但這個(gè)方法的缺點(diǎn)非常明顯:同一個(gè)接口創(chuàng)建很可耐多對(duì)象會(huì)產(chǎn)生大量的重復(fù)代碼。為了解決這個(gè)問題,人們開始使用工廠...

    tracymac7 評(píng)論0 收藏0
  • 淺談 OOP JavaScript [3] -- 原型

    摘要:上一章我們談了構(gòu)造函數(shù),他的唯一特點(diǎn)就是比較了地址不相同,因?yàn)榇蠹抑酪妙愋褪潜容^的引用。也就是說不用在構(gòu)造函數(shù)中定義對(duì)象實(shí)例,而是直接將這些添加到原型當(dāng)中。如果構(gòu)造函數(shù)實(shí)例里面沒有,就去原型里面查找,如果有就立即返回。 上一章我們談了構(gòu)造函數(shù),他的唯一特點(diǎn)就是比較了地址不相同,因?yàn)榇蠹抑酪妙愋褪潜容^的引用。我們來談?wù)勗汀?原型 我們每創(chuàng)建一個(gè)函數(shù)都有一個(gè)原型(prototyp...

    SQC 評(píng)論0 收藏0
  • JavaScript面向對(duì)象精要(二)

    摘要:使用時(shí),會(huì)自動(dòng)創(chuàng)建對(duì)象,其類型為構(gòu)造函數(shù)類型,指向?qū)ο髮?shí)例缺少關(guān)鍵字,指向全局對(duì)象。構(gòu)造函數(shù)本身也具有屬性指向原型對(duì)象。 在JavaScript面向?qū)ο缶?一)中講解了一些與面向?qū)ο笙嚓P(guān)的概念和方法,這篇講講原型和繼承。 構(gòu)造函數(shù)和原型對(duì)象 構(gòu)造函數(shù)也是函數(shù),用new創(chuàng)建對(duì)象時(shí)調(diào)用的函數(shù),與普通函數(shù)的一個(gè)區(qū)別是,其首字母應(yīng)該大寫。但如果將構(gòu)造函數(shù)當(dāng)作普通函數(shù)調(diào)用(缺少new關(guān)鍵字...

    wayneli 評(píng)論0 收藏0
  • Javascript對(duì)象創(chuàng)建方法

    摘要:構(gòu)造函數(shù)與原型組合利用構(gòu)造函數(shù)都是實(shí)例屬性和原型的共享特性,分別定義對(duì)應(yīng)的內(nèi)容,組合共同完成對(duì)象創(chuàng)建,而且該模式還支持想構(gòu)造函數(shù)傳遞參數(shù)。引用類型為實(shí)例屬性寄生構(gòu)造模式構(gòu)造函數(shù)在不反回值的情況下,默認(rèn)會(huì)返回新對(duì)象實(shí)例。 創(chuàng)建對(duì)象 1.1 通過Object對(duì)象創(chuàng)建 var person = new Object(); person.name = Albert; person.sayNam...

    ZoomQuiet 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<