大多数线程都是通过传统的javascript生成的
new function(){}
然后创建一个伪构造函数
var singleton = {
dothis: function(){},
dothat: function(){}
}
可以实现利用闭包:
var myInstance = (function() {
var privateVar;
function privateMethod () {
// ...
}
return { // public interface
publicMethod1: function () {
// private members can be accessed here
},
publicMethod2: function () {
// ...
}
};
})();
关于构造时,它将简单地将匿名函数用于
function singleton() {
var instance = (function() {
var privateVar;
function privateMethod () {
// ...
}
return { // public interface
publicMethod1: function () {
// private members can be accessed here
},
publicMethod2: function () {
// ...
}
};
})();
singleton = function () { // re-define the function for subsequent calls
return instance;
};
return singleton(); // call the new function
}
当第一次调用该函数时,我将创建对象实例,并重新分配一个新函数,它的闭
包中包含了该对象实例。
可以通过比较返回的对象来证明这一点:
singleton() == singleton(); // true
也将返回false:
({}) == ({}); // false
new Object() == new Object(); // false
可以尝试下这个代码:
var singleton = {};
singleton.dothis = function(){
};
singleton.someVariable = 5;