闭包
定义
闭包的定义,简洁来讲:有权访问外部函数作用域的函数
作用
在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
相当于一个静态的变量