亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - js中單例模式疑惑

瀏覽:116日期:2023-04-19 16:14:49

問(wèn)題描述

以下代碼

function Universe() { // 緩存的實(shí)例 var instance = this; // 其它內(nèi)容 this.start_time = 0; this.bang = 'Big'; // 重寫(xiě)構(gòu)造函數(shù) Universe = function () {return instance; };}// 測(cè)試var uni = new Universe();var uni2 = new Universe();uni.bang = '123';console.log(uni === uni2); // trueconsole.log(uni2.bang); // 123

點(diǎn)擊查看原文

問(wèn)題:

new Universe()的過(guò)程是:var o = {};Universe.call(o);//這一步是將Universe中this對(duì)應(yīng)的屬性賦值給o;o.__proto__ = Universe.prototype;//將Universe原型上的方法賦值到o的__proto__屬性上;

那么 var instance = this;中,this是不是指的是不同的對(duì)象o?那么重寫(xiě)構(gòu)造函數(shù)后,返回的instance不就是不同的對(duì)象嗎?為什么最后能相等

問(wèn)題解答

回答1:

因?yàn)橹貙?xiě)了構(gòu)造函數(shù)后, 返回一個(gè)對(duì)象, 這個(gè)對(duì)象會(huì)覆蓋你 用new 構(gòu)造函數(shù)生成的那個(gè)對(duì)象,不知道我有沒(méi)有說(shuō)清楚

回答2:

@mpccc 說(shuō)的對(duì)。

如果構(gòu)造函數(shù)返回一個(gè)對(duì)象,那 new 出來(lái)的就是這個(gè)對(duì)象啦。

可以看看秘密花園中的構(gòu)造函數(shù)這一段

回答3:

我也是新手,嘗試解答一下,要是錯(cuò)了可別怪我

第一 this是不是指的是不同的對(duì)象 在第一次調(diào)用構(gòu)造函數(shù)的時(shí)候 產(chǎn)生一個(gè)空的對(duì)象 并且函數(shù)內(nèi)部的this指向了這個(gè)空對(duì)象,接著執(zhí)行代碼,最后返回這個(gè)對(duì)象 也就是uni。

而在第二次調(diào)用的時(shí)候由于第一次函數(shù)的改寫(xiě),產(chǎn)生了一個(gè)閉包,這個(gè)閉包的內(nèi)部的instance正好指向了第一次調(diào)用時(shí)的產(chǎn)生的對(duì)象uni,當(dāng)?shù)诙螆?zhí)行new Universe()的時(shí)候你執(zhí)行的是一個(gè)閉包,也會(huì)產(chǎn)生一個(gè)空的對(duì)象,但那個(gè)對(duì)象并沒(méi)有用到它,反而是直接返回了閉包內(nèi)部的instance也就是uni。

所以u(píng)ni2 === uni.

回答4:

偏個(gè)題,這樣寫(xiě)單例模式有點(diǎn)多余,要?jiǎng)?chuàng)建唯一的對(duì)象不用非得造個(gè)構(gòu)造函數(shù)

var single = function(fn){ var instance; return function(){ return instance || (instance = fn .apply(this, arguments)); } }; 回答5:

不是注釋寫(xiě)了嗎,重寫(xiě)了構(gòu)造函數(shù)啊,你new了一次之后再new就沒(méi)有var instance = this;這行代碼了,instance自然就不變了

//簡(jiǎn)單打印一下就知道了console.log(Universe)var uni = new Universe()console.log(Universe)回答6:

首次執(zhí)行new Universe()的時(shí)候,確實(shí)產(chǎn)生了一個(gè)新的this,并且將Universe構(gòu)造函數(shù)改寫(xiě)了,之后再次調(diào)用這個(gè)new Universe()的時(shí)候,就只會(huì)return instance了,不會(huì)產(chǎn)生新的對(duì)象了。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲欧美高清 | 一本毛片 | 91无套极品外围在线播放 | 最新精品在线视频 | 久久免费99精品国产自在现线 | 欧美一区a| 涩涩网站在线观看 | 91福利一区二区 | 国产乱码精品一区二区三上 | 亚洲免费在线播放 | 波多久久夜色精品国产 | 国产美女视频一区 | 久久亚洲精品人成综合网 | 无毒不卡在线播放 | 亚洲国产成人手机在线电影bd | 国产高清一区二区三区四区 | 国产呦系列 欧美呦 日韩呦 | 国产一级二级 | 亚洲综合精品香蕉久久网 | 80年代毛片dvd版 | 欧美一区二区三区视频在线观看 | 国产未成女年一区二区 | 成人免费的性色视频 | 国产婷婷综合在线精品尤物 | 美女黄污网站 | 日本精品中文字幕在线播放 | 欧洲男女啪啪免费观看 | 日韩在线不卡 | 香蕉视频网站免费观视频 | 国产无遮挡裸体免费视频在线观看 | 久久夜色精品 | 日本欧美黄色 | 99热在线只有精品 | 小色片| 成人精品视频在线 | 一本久道热中字伊人 | 久草免费公开视频 | 五月天激激婷婷大综合丁香 | 亚洲国产三级在线观看 | 久久久综合九色合综国产 | 久久视频在线看 |