色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

javascript - js中單例模式疑惑

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

問題描述

以下代碼

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

點(diǎn)擊查看原文

問題:

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

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

問題解答

回答1:

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

回答2:

@mpccc 說的對。

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

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

回答3:

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

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

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

所以uni2 === uni.

回答4:

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

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

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

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

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

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 欧美黄区| 亚洲天天看 | 国产在线精品福利91香蕉 | 欧美午夜毛片a级在线 | 成人一级大片 | 给我一个可以看片的www日本 | 在线a亚洲视频播放在线观看 | 久久成人免费网站 | 狠狠色综合网站久久久久久久 | 美女作爱网站 | 亚洲美女性视频 | 亚洲精品成人 | 97超级碰碰碰碰在线视频 | 免费观看a毛片一区二区不卡 | 97超级碰碰碰碰在线视频 | 亚洲精品亚洲人成毛片不卡 | 精品欧美一区二区精品久久 | 一区二区三区四区国产精品 | 精品视频久久 | 国产成人国产在线观看入口 | 中文字幕99在线精品视频免费看 | 欧美视频一区二区三区在线观看 | 亚洲欧美日韩在线一区 | 国产午夜精品久久理论片小说 | 久久国产精品最新一区 | 免费国产午夜高清在线视频 | 91视频一88av | 日本特级淫片免费看 | 中文字幕在线视频观看 | 国产丝袜美腿高跟白浆 | 成人影院人人免费 | 国产精品久久久久久久久久日本 | 国内精品久久久久久影院老狼 | 免费观看欧美精品成人毛片 | 日韩国产中文字幕 | 高清精品女厕在线观看 | 日韩在线免费视频 | 高清不卡日本v在线二区 | 日本不卡一二三区 | 正在播放国产精品放孕妇 | 男人天堂免费 |