国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

simon_chen / 3257人閱讀

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

前言

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

正文

問題:
重寫之后,原型對象的constructor不在指向原型對象所在的函數

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

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

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

但是這樣寫又有了新問題,[[Enumerable]]默認是true,而原先的構造函數默認是false,這時候我們可以修改對象的屬性,修改對象的屬性自然要用到強大的defineProperty啦

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96594.html

相關文章

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

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

    chnmagnus 評論0 收藏0
  • JavaScript面向對象程序設計——“創建對象注意要點

    摘要:所以,可以創建自定義的構造函數,從而定義自定義對象類型的屬性和方法。如對于構造函數原型屬性以及實例之間的關系,參見高級程序設計一書中第章節。穩妥構造函數模式穩妥對象,指的是沒有公共屬性,且其方法也不引用的對象如 創建對象 Object 構造函數或對象字面量都可以用來創建單個對象。但這個方法的缺點非常明顯:同一個接口創建很可耐多對象會產生大量的重復代碼。為了解決這個問題,人們開始使用工廠...

    tracymac7 評論0 收藏0
  • 淺談 OOP JavaScript [3] -- 原型

    摘要:上一章我們談了構造函數,他的唯一特點就是比較了地址不相同,因為大家知道引用類型是比較的引用。也就是說不用在構造函數中定義對象實例,而是直接將這些添加到原型當中。如果構造函數實例里面沒有,就去原型里面查找,如果有就立即返回。 上一章我們談了構造函數,他的唯一特點就是比較了地址不相同,因為大家知道引用類型是比較的引用。我們來談談原型。 原型 我們每創建一個函數都有一個原型(prototyp...

    SQC 評論0 收藏0
  • JavaScript面向對象精要(二)

    摘要:使用時,會自動創建對象,其類型為構造函數類型,指向對象實例缺少關鍵字,指向全局對象。構造函數本身也具有屬性指向原型對象。 在JavaScript面向對象精要(一)中講解了一些與面向對象相關的概念和方法,這篇講講原型和繼承。 構造函數和原型對象 構造函數也是函數,用new創建對象時調用的函數,與普通函數的一個區別是,其首字母應該大寫。但如果將構造函數當作普通函數調用(缺少new關鍵字...

    wayneli 評論0 收藏0
  • Javascript對象創建方法

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

    ZoomQuiet 評論0 收藏0

發表評論

0條評論

simon_chen

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<