国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

javascript - js中單例模式疑惑

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

問題描述

以下代碼

function Universe() { // 緩存的實例 var instance = this; // 其它內容 this.start_time = 0; this.bang = 'Big'; // 重寫構造函數 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對應的屬性賦值給o;o.__proto__ = Universe.prototype;//將Universe原型上的方法賦值到o的__proto__屬性上;

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

問題解答

回答1:

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

回答2:

@mpccc 說的對。

如果構造函數返回一個對象,那 new 出來的就是這個對象啦。

可以看看秘密花園中的構造函數這一段

回答3:

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

第一 this是不是指的是不同的對象 在第一次調用構造函數的時候 產生一個空的對象 并且函數內部的this指向了這個空對象,接著執行代碼,最后返回這個對象 也就是uni。

而在第二次調用的時候由于第一次函數的改寫,產生了一個閉包,這個閉包的內部的instance正好指向了第一次調用時的產生的對象uni,當第二次執行new Universe()的時候你執行的是一個閉包,也會產生一個空的對象,但那個對象并沒有用到它,反而是直接返回了閉包內部的instance也就是uni。

所以uni2 === uni.

回答4:

偏個題,這樣寫單例模式有點多余,要創建唯一的對象不用非得造個構造函數

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

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

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

首次執行new Universe()的時候,確實產生了一個新的this,并且將Universe構造函數改寫了,之后再次調用這個new Universe()的時候,就只會return instance了,不會產生新的對象了。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 亚洲一区二区三区不卡视频 | 国产成人精品免费视频软件 | 韩国精品一区视频在线播放 | 在线成人免费观看国产精品 | 国产亚洲片| 一区二区三区四区产品乱码伦 | 国产成人精品日本亚洲语音2 | 亚洲第五色综合网啪啪 | 国产极品一区 | a级国产乱理伦片在线观看国 | 亚洲女人被黑人猛躁进女人 | 国产一区二区三区在线看 | 中文字幕在线观看一区二区三区 | 亚洲夜夜爽| 久久99精品九九九久久婷婷 | 免费一级欧美性大片 | 久久一区二区三区免费播放 | 久久精品免费视频观看 | 精品一区二区三区亚洲 | 澳门毛片免费观看 | 日韩欧美一区二区在线 | 国产亚洲精品美女一区二区 | 国产成人 免费观看 | 亚洲国产精品成人综合久久久 | 男女性高爱潮免费网站 | 男人的天堂免费网站 | 国产原创系列在线 | 久久久久久久99精品免费观看 | 日韩美视频网站 | 久久视频免费在线观看 | 欧美午夜激情影院 | 美女扒开腿让男人桶个爽 | 国产精品久久久久久久久久久久 | 一级特黄特黄的大片免费 | 日本成本人视频 | 波多野结衣在线观看一区二区三区 | 精品国产无限资源免费观看 | 久久九九有精品国产56 | 国产成人丝袜网站在线看 | 欧美一二三 | 国产精品夜色视频一级区 |