當我嘗試創建此模塊的不同實例時,它不起作用。爲什麼模塊模式創建單例?
它似乎是一個單身人士。我一次只能有一個實例。
什麼機制限制構造函數publik()只對實例有效?
var Module = (function()
{
var publik = function ()
{
};
publik.prototype.test;
publik.prototype.get = function()
{
document.getElementById('a'+test).innerHTML = test;
};
publik.prototype.set = function(value)
{
test = value;
};
return publik;
})();
var object1 = new Module();
var object2 = new Module();
object1.set('1');
object2.set('2');
object1.get();
object2.get();
因此,每次我調用新的時候,它都不是一個新的函數對象,它是一樣的嗎? –
是的。爲了更加準確,當你在(function(){}())模式中包含一個函數時,它會在加載時自動執行,並且結果放在它的位置。所以你的腳本最終看起來像(內部)var Module = YourObjectWithGetAndSetMethods; 而當你做一個var x = Module();您正在調用已實例化的對象,因此調用了實例化的publik變量。 – Zlatko
似乎像一個假的模式給我。它「打破」關鍵詞「新」的含義。你同意嗎?如果是這樣,人們爲什麼使用這個?我顯然沒有發明它。 –