闭包

定义

闭包的定义,简洁来讲:有权访问外部函数作用域的函数

作用

在JavaScript中有作用域和执行环境的问题,在函数内部的变量在函数外部是无法访问的,在函数内部却可以得到全局变量。由于种种原因,我们有时候需要得到函数内部的变量,可是用常规方法是得不到的,这时我们就可以创建一个闭包,用来在外部访问这个变量。

这段话点明了闭包的一个重要的作用,就是封装

通过将一个方法或者属性声明为私用的,可以让对象的实现细节对其他对象保密以降低对象之间的耦合程度,可以保持数据的完整性并对其修改方式加以约束,这样可以是代码更可靠,更易于调试。封装是面向对象的设计的基石。

示例:

function Person(name){
    var _name = name; //_name 就是私有的变量
    this.getName = function() {
        return _name;
    }
};
var p = new Person('zhang');
p.getName();//zhang

在示例中,只能通过getName才能访问到变量_name,由于没有提供修改的_name的接口,因此可以说_name相当于一个静态的变量

results matching ""

    No results matching ""