我如何了解“封闭”使用情况?

维基百科,自由的百科全书: Closure(计算机科学)

在计算机科学中,闭包是一个在包含一个或多个绑定变量的环境中进行评估的函数。 被调用时,函数可以访问这些变量。 明确使用闭包与函数式编程和ML和Lisp等语言相关。 诸如其他语言中的对象的构造也可以用闭包来建模。

要在JavaScript中使用这个内容,有人能指出我如何适用这个例子吗?


(使用来自jQuery的示例)

function SetClassOnHover(className){
  $("td").hover(
    function () {
      $(this).addClass(className);
    },
    function () {
      $(this).removeClass(className);
    }
  );
}

当在每个函数的作用域内使用变量className时,闭包将发挥作用。 当SetClassOnHover退出时,两个函数都必须在className上保留一个句柄,以便在调用函数时访问它的值。 这就是封闭所能实现的。


搜索“JavaScript关闭”给了很多令人鼓舞的外观链接。 排名前三的是这两个(第三个链接是第二个重新格式化的版本):

  • Javascript关闭
  • 关闭假人的JavaScript
  • 如果这些对你没有帮助,请解释一下为什么我们能够更好地帮助你。 如果您在提问之前没有进行搜索,那么请等待下一次:)


    闭包的一个实际例子是当它们被用来创建“私有”变量时,比如

    function incrementer(){
        var i=0;
        this.increment=function(){
            i++;
        }
        this.get=function(){
            return i;
        }
    }
    

    访问我的唯一方法是使用方法get,并且更改它的唯一方法是使用方法increment。 在类中,你可以这样做来模拟私有变量。

    链接地址: http://www.djcxy.com/p/51263.html

    上一篇: How do I learn about "closures" usage?

    下一篇: C++ implementation from a C++ header?