有什么可以关闭JavaScript的使用呢?(What can javascript closure

2019-10-17 21:52发布

我一直在想了一会儿 - 可以关闭JavaScript的使用什么?

我知道如何写他们,我知道他们是如何工作的,但我不能让他们如何使用的想法。

function closure() {
  var name = "John";
  function displayName() {
    return 'Hello, ' + name;
  }
  return displayName;
}

到目前为止,我只找到他们一个用途 - 封装数据,所以它不会在函数外可见。

还有什么可它们被用来做什么? 我应该写带密封盖OOP? 我需要把我所有的代码闭包内,以便它不会乱了全球范围内?

任何澄清的高度赞赏!

Answer 1:

也可以用来保护里面colsure代码对命名封闭外不同的库之间的冲突。 防爆每当我创建一个jQuery插件,我将其创建为自闭电话,我通过在“JQuery的”,但可以有把握地参考$瓶盖内由于名为$变量在我的函数定义的局部范围。 即使有使用$变量用于不同目的的其他图书馆

(function($){ //use $ safely inside the closure })
(jQuery);


Answer 2:

就个人而言,除了像封装或创建私有上下文明显的事情,我喜欢单身的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.


文章来源: What can javascript closures be used for?