av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

javascript - js中單例模式疑惑

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

問題描述

以下代碼

function Universe() { // 緩存的實例 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

點擊查看原文

問題:

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:

因為重寫了構(gòu)造函數(shù)后, 返回一個對象, 這個對象會覆蓋你 用new 構(gòu)造函數(shù)生成的那個對象,不知道我有沒有說清楚

回答2:

@mpccc 說的對。

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

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

回答3:

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

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

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

所以uni2 === uni.

回答4:

偏個題,這樣寫單例模式有點多余,要創(chuàng)建唯一的對象不用非得造個構(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()的時候,確實產(chǎn)生了一個新的this,并且將Universe構(gòu)造函數(shù)改寫了,之后再次調(diào)用這個new Universe()的時候,就只會return instance了,不會產(chǎn)生新的對象了。

標簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 欧美精品久久久久 | 国产日韩一区二区三免费高清 | 亚洲欧美在线观看视频 | 国产高清一区二区 | 欧美中文字幕一区 | 欧美日韩黄 | 韩国av影院| 成人高清在线 | 999精品视频在线观看 | 都市激情亚洲 | 欧美日韩国产在线观看 | 亚洲一区二区三区久久 | 美女一级黄 | 伊人网伊人网 | 日韩国产精品一区二区三区 | 黄色三级免费网站 | 黄色一级在线播放 | 久久久久国产精品 | av网站在线播放 | 香蕉av免费| 在线久草| 蜜桃在线一区二区三区 | 久久tv在线观看 | 午夜精品一区二区三区在线视频 | 国产一区不卡 | 午夜无码国产理论在线 | 国产欧美一区二区三区日本久久久 | 精品一区二区在线观看 | 91资源在线| 91精品午夜窝窝看片 | h视频在线免费 | 亚洲第一av | 天天躁天天操 | 久久国产精品99久久久久久丝袜 | 欧美区日韩区 | 国产精品久久久久久婷婷天堂 | 一区二区成人 | 91视在线国内在线播放酒店 | 日韩成人 | 日韩网站在线观看 | 久热伊人 |