[英]Creating Objects with the references of a function's private functions
我遇到了一個摘要,我懷疑它是否可以以簡單的方式編寫。 有人可以告訴我以下兩個摘要之間的區別是什么:
var printer = (function () {
var printerInstance;
var obj = {
f1: function() {},
f2: function() {}
};
return {
getInstance: function() {
if(!printerInstance) {
printerInstance = obj;
}
return printerInstance;
}
};
})();
和
var printer = (function () {
var printerInstance;
function create() {
function f1() {}
function f2() {}
return {
f1: f1,
f2: f2
}
}
return {
getInstance: function() {
if(!printerInstance) {
printerInstance = create();
}
return printerInstance;
}
};
})();
我不明白為什么在第二個示例中的函數內部創建了對象。 請澄清。
好吧,第一個對象在所有調用中都有一個名為obj
對象,第二個obj
為每個調用都創建了一個新對象。
舉例來說,它是:
var obj = {
var counter = 0;
f1: function() { return counter++; },
f2: function() {}
};
第二個是:
function create() {
var counter = 0;
function f1() { return counter++; }
function f2() {}
return {
f1: f1,
f2: f2
}
}
在第一種情況下,有一個對象帶有一個counter
,所有getInstance
調用(其中printerInstance
等於null
)都將引用該對象。 因此,這更像是Singleton 。
在第二種情況下,每次對getInstance
調用都將擁有其自己的計數器並獨立計數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.