摘要:先寫一個(gè)構(gòu)造函數(shù)這樣就創(chuàng)建了函數(shù)的私有變量為什么函數(shù)對(duì)象的定義是具有私有字段的對(duì)象,構(gòu)造器對(duì)象的定義是具有的對(duì)象。但是他們并不總是一致的。的執(zhí)行大概有以下步驟基于對(duì)象的原型創(chuàng)建一個(gè)新的對(duì)象,把傳給。
先寫一個(gè)構(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ù)對(duì)象的定義是:具有 [[call]] 私有字段的對(duì)象,構(gòu)造器對(duì)象的定義是:具有[[construct]]的對(duì)象。
換句話說任何對(duì)象實(shí)現(xiàn)了[[call]]就是函數(shù)對(duì)象,可以當(dāng)做函數(shù)被調(diào)用,實(shí)現(xiàn)了[[construct]]就是構(gòu)造器對(duì)象,可以作為構(gòu)造器被調(diào)用。但是他們并不總是一致的。
[[construct]]的執(zhí)行大概有以下步驟
基于對(duì)象的原型Object.prototype創(chuàng)建一個(gè)新的對(duì)象,把this傳給[[call]]。如果[[call]]的返回值是一個(gè)對(duì)象,返回這個(gè)對(duì)象,如果返回不是對(duì)象,就返回基于原型創(chuàng)建的新的對(duì)象。
所以文章開頭的代碼也就一目了然,為什么通過getNumber能獲取到 直接n.number卻不能獲取到
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/101780.html
摘要:函數(shù)用于指定對(duì)象的行為。關(guān)于屬性只在構(gòu)造器函數(shù)的原型上才有的屬性并指向該構(gòu)造器,改寫了的原型對(duì)象默認(rèn)是沒有屬性的。函數(shù)化工廠模式在偽類模式里,構(gòu)造器函數(shù)不得不重復(fù)構(gòu)造器已經(jīng)完成的工作。 1.對(duì)象適合于收集和管理數(shù)據(jù),容易形成樹型結(jié)構(gòu)。Javascript包括一個(gè)原型鏈特性,允許對(duì)象繼承另一對(duì)象的屬性。正確的使用它能減少對(duì)象的初始化時(shí)間和內(nèi)存消耗。2.函數(shù)它們是javascript的基礎(chǔ)...
摘要:但采用構(gòu)造器調(diào)用模式,即是使用了前綴去調(diào)用一個(gè)函數(shù)時(shí),函數(shù)執(zhí)行的方式會(huì)改變。對(duì)象包含構(gòu)造器需要構(gòu)造一個(gè)新的實(shí)例的所有信息。構(gòu)造器的變量和內(nèi)部函數(shù)變成了該實(shí)例的私有成員。 JavaScript 是一門弱類型語言,從不需要類型轉(zhuǎn)換。對(duì)象繼承關(guān)系變得無關(guān)緊要。對(duì)于一個(gè)對(duì)象來說重要的時(shí)它能夠做什么,而不是它從哪里來。 閱讀《javascript語言精粹》筆記! 偽類 js的原型存...
面向?qū)ο蟮恼Z言有一個(gè)標(biāo)志,即擁有類的概念,抽象實(shí)例對(duì)象的公共屬性與方法,基于類可以創(chuàng)建任意多個(gè)實(shí)例對(duì)象,一般具有封裝、繼承、多態(tài)的特性!但JS中對(duì)象與純面向?qū)ο笳Z言中的對(duì)象是不同的,ECMA標(biāo)準(zhǔn)定義JS中對(duì)象:無序?qū)傩缘募希鋵傩钥梢园局怠?duì)象或者函數(shù)。 我們首選要了解封裝、繼承、多態(tài)又有如何特點(diǎn) 封裝:顧名思義來封裝變量和函數(shù)封裝->特點(diǎn):高度復(fù)用,降低冗余度,更有利于模塊化編程,能夠?yàn)?..
摘要:因?yàn)榭赡艽嬖谝粋€(gè)同名的構(gòu)造函數(shù),當(dāng)你調(diào)用的時(shí)候,解析器需要順著作用域鏈從當(dāng)前作用域開始查找,直到找到全局構(gòu)造函數(shù)為止。 簡介 在軟件開發(fā)過程中,模式是指一個(gè)通用問題的解決方案。一個(gè)模式不僅僅是一個(gè)可以用來復(fù)制粘貼的代碼解決方案,更多地是提供了一個(gè)更好的實(shí)踐經(jīng)驗(yàn)、有用的抽象化表示和解決一類問題的模板。 對(duì)象有兩大類: 本地對(duì)象(Native):由ECMAScript標(biāo)準(zhǔn)定義的對(duì)象 宿主...
摘要:給添加屬性給的原型對(duì)象添加屬性原型鏈在中,每個(gè)對(duì)象都有一個(gè)屬性,其保存著的地址就構(gòu)成了對(duì)象的原型鏈。實(shí)例變量實(shí)例函數(shù)原型鏈繼承有了原型鏈,就可以借助原型鏈實(shí)現(xiàn)繼承。是中唯一一個(gè)處理屬性但是不查找原型鏈的函數(shù)。 前端學(xué)習(xí):教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:原型&原型鏈&原型繼承 JavaScript-原...
閱讀 3227·2021-11-17 09:33
閱讀 3302·2021-11-15 11:37
閱讀 2968·2021-10-19 11:47
閱讀 3216·2019-08-29 15:32
閱讀 1019·2019-08-29 15:27
閱讀 1539·2019-08-29 13:15
閱讀 943·2019-08-29 12:47
閱讀 2037·2019-08-29 11:30