色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

JavaScript的單例模式 (singleton in Javascript)

單例模式的基本結構:
復制代碼 代碼如下:
MyNamespace.Singleton = function() {
return {};
}();

比如:
復制代碼 代碼如下:
MyNamespace.Singleton = (function() {
return { // Public members.
publicAttribute1: true,
publicAttribute2: 10,
publicMethod1: function() {
...
},
publicMethod2: function(args) {
...
}
};
})();

但是,上面的Singleton在代碼一加載的時候就已經建立了,怎么延遲加載呢?想象C#里怎么實現單例的:)采用下面這種模式:
復制代碼 代碼如下:
MyNamespace.Singleton = (function() {
function constructor() { // All of the normal singleton code goes here.
...
}
return {
getInstance: function() {
// Control code goes here.
}
}
})();

具體來說,把創建單例的代碼放到constructor里,在首次調用的時候再實例化:
完整的代碼如下:
復制代碼 代碼如下:
MyNamespace.Singleton = (function() {
var uniqueInstance; // Private attribute that holds the single instance.
function constructor() { // All of the normal singleton code goes here.
...
}
return {
getInstance: function() {
if(!uniqueInstance) { // Instantiate only if the instance doesn't exist.
uniqueInstance = constructor();
}
return uniqueInstance;
}
}
})();

JavaScript技術JavaScript的單例模式 (singleton in Javascript),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 高邑县| 昌都县| 合川市| 成安县| 平武县| 庄浪县| 区。| 房山区| 镇坪县| 偃师市| 丹阳市| 山西省| 汕头市| 友谊县| 玛沁县| 怀安县| 乡城县| 大城县| 当阳市| 德令哈市| 东丽区| 中宁县| 合作市| 和平区| 黑龙江省| 新蔡县| 济宁市| 潢川县| 临夏县| 清丰县| 汾西县| 德州市| 万全县| 德化县| 鹿泉市| 佛教| 南乐县| 象州县| 永登县| 武冈市| 巴塘县|