就个人而言,除了封装或创建私有上下文等显而易见的事情外,我喜欢单例 JavaScript 设计模式:
function Singleton() {
// cached instance
var instance = this;
//proceed as normal - adding some variables
this.variable1 = 1000;
this.variable2 = 3000000;
Singleton = function() {
return instance;
}
}
var singleton1 = new Singleton();
var singleton2 = new Singleton();
if(singleton1 === singleton2) {
console.log("Singleton works :)");
}
else {
console.log("Singleton doesn't work :/");
}
您可以将此代码直接粘贴到 Chrome JavaScript 控制台中。
当然,您可以根据自己的需要对其进行调整。还有一些缺点 - 您可以覆盖 Singleton 函数,并且您将无法再访问实例。但这是另一个问题。
我很久以前在 Stoyan Stefanov (O'Reilly) 的 JavaScript 模式一书中找到了它。检查一下,因为还有其他有用的设计模式和闭包应用程序示例。根据这本书:
You can use closure to store some private data, which is accessible by the returned function but not to the outside code.