我一直在想了一会儿 - 可以关闭JavaScript的使用什么?
我知道如何写他们,我知道他们是如何工作的,但我不能让他们如何使用的想法。
function closure() {
var name = "John";
function displayName() {
return 'Hello, ' + name;
}
return displayName;
}
到目前为止,我只找到他们一个用途 - 封装数据,所以它不会在函数外可见。
还有什么可它们被用来做什么? 我应该写带密封盖OOP? 我需要把我所有的代码闭包内,以便它不会乱了全球范围内?
任何澄清的高度赞赏!
也可以用来保护里面colsure代码对命名封闭外不同的库之间的冲突。 防爆每当我创建一个jQuery插件,我将其创建为自闭电话,我通过在“JQuery的”,但可以有把握地参考$瓶盖内由于名为$变量在我的函数定义的局部范围。 即使有使用$变量用于不同目的的其他图书馆
(function($){ //use $ safely inside the closure })
(jQuery);
就个人而言,除了像封装或创建私有上下文明显的事情,我喜欢单身的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 :/");
}
您可以直接将此代码粘贴到浏览器的JavaScript控制台。
当然,你可以调整,以满足您的需求。 也有一些缺点 - 您可以覆盖辛格尔顿功能,您将无法再访问实例。 但是,这是另一个问题。
我在由斯托扬斯特凡(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.