成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

構(gòu)造函數(shù)創(chuàng)建私有變量(防繼承)

xioqua / 1202人閱讀

摘要:先寫一個構(gòu)造函數(shù)這樣就創(chuàng)建了函數(shù)的私有變量為什么函數(shù)對象的定義是具有私有字段的對象,構(gòu)造器對象的定義是具有的對象。但是他們并不總是一致的。的執(zhí)行大概有以下步驟基于對象的原型創(chuàng)建一個新的對象,把傳給。

先寫一個構(gòu)造函數(shù)

    function NumberCount() {
        this.number = 500
        return {
            getNumber: ()=> {
                return this.number
            }
        }
    }

let n = new NumberCount;
console.log(n.getNumber()) // 500
console.log(n.number) // undefined

這樣就創(chuàng)建了函數(shù)的私有變量

為什么?

函數(shù)對象的定義是:具有 [[call]] 私有字段的對象,構(gòu)造器對象的定義是:具有[[construct]]的對象。

換句話說任何對象實現(xiàn)了[[call]]就是函數(shù)對象,可以當(dāng)做函數(shù)被調(diào)用,實現(xiàn)了[[construct]]就是構(gòu)造器對象,可以作為構(gòu)造器被調(diào)用。但是他們并不總是一致的。

[[construct]]的執(zhí)行大概有以下步驟

基于對象的原型Object.prototype創(chuàng)建一個新的對象,把this傳給[[call]]。如果[[call]]的返回值是一個對象,返回這個對象,如果返回不是對象,就返回基于原型創(chuàng)建的新的對象。

所以文章開頭的代碼也就一目了然,為什么通過getNumber能獲取到 直接n.number卻不能獲取到

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/101780.html

相關(guān)文章

  • javascript---類與函數(shù)

    摘要:函數(shù)用于指定對象的行為。關(guān)于屬性只在構(gòu)造器函數(shù)的原型上才有的屬性并指向該構(gòu)造器,改寫了的原型對象默認是沒有屬性的。函數(shù)化工廠模式在偽類模式里,構(gòu)造器函數(shù)不得不重復(fù)構(gòu)造器已經(jīng)完成的工作。 1.對象適合于收集和管理數(shù)據(jù),容易形成樹型結(jié)構(gòu)。Javascript包括一個原型鏈特性,允許對象繼承另一對象的屬性。正確的使用它能減少對象的初始化時間和內(nèi)存消耗。2.函數(shù)它們是javascript的基礎(chǔ)...

    waruqi 評論0 收藏0
  • 《javascript語言精粹》學(xué)習(xí)筆記 - 繼承

    摘要:但采用構(gòu)造器調(diào)用模式,即是使用了前綴去調(diào)用一個函數(shù)時,函數(shù)執(zhí)行的方式會改變。對象包含構(gòu)造器需要構(gòu)造一個新的實例的所有信息。構(gòu)造器的變量和內(nèi)部函數(shù)變成了該實例的私有成員。 JavaScript 是一門弱類型語言,從不需要類型轉(zhuǎn)換。對象繼承關(guān)系變得無關(guān)緊要。對于一個對象來說重要的時它能夠做什么,而不是它從哪里來。 閱讀《javascript語言精粹》筆記! 偽類 js的原型存...

    harriszh 評論0 收藏0
  • 解釋JS中的靜態(tài)方法、公有方法、私有方法和特權(quán)方法

    面向?qū)ο蟮恼Z言有一個標(biāo)志,即擁有類的概念,抽象實例對象的公共屬性與方法,基于類可以創(chuàng)建任意多個實例對象,一般具有封裝、繼承、多態(tài)的特性!但JS中對象與純面向?qū)ο笳Z言中的對象是不同的,ECMA標(biāo)準(zhǔn)定義JS中對象:無序?qū)傩缘募?,其屬性可以包含基本值、對象或者函?shù)。 我們首選要了解封裝、繼承、多態(tài)又有如何特點 封裝:顧名思義來封裝變量和函數(shù)封裝->特點:高度復(fù)用,降低冗余度,更有利于模塊化編程,能夠為...

    wizChen 評論0 收藏0
  • 《JavaScript 模式》讀書筆記

    摘要:因為可能存在一個同名的構(gòu)造函數(shù),當(dāng)你調(diào)用的時候,解析器需要順著作用域鏈從當(dāng)前作用域開始查找,直到找到全局構(gòu)造函數(shù)為止。 簡介 在軟件開發(fā)過程中,模式是指一個通用問題的解決方案。一個模式不僅僅是一個可以用來復(fù)制粘貼的代碼解決方案,更多地是提供了一個更好的實踐經(jīng)驗、有用的抽象化表示和解決一類問題的模板。 對象有兩大類: 本地對象(Native):由ECMAScript標(biāo)準(zhǔn)定義的對象 宿主...

    teren 評論0 收藏0
  • 溫故js系列(15)-原型&原型鏈&原型繼承

    摘要:給添加屬性給的原型對象添加屬性原型鏈在中,每個對象都有一個屬性,其保存著的地址就構(gòu)成了對象的原型鏈。實例變量實例函數(shù)原型鏈繼承有了原型鏈,就可以借助原型鏈實現(xiàn)繼承。是中唯一一個處理屬性但是不查找原型鏈的函數(shù)。 前端學(xué)習(xí):教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:原型&原型鏈&原型繼承 JavaScript-原...

    Ethan815 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<