搜索
写经验 领红包
 > 时尚

js闭包什么时候用(js闭包的典型应用场景)

导语:「原创整理」js什么情况下使用闭包?

js闭包什么时候用(js闭包的典型应用场景)

1.实现封装

可以先来看一个关于封装的例子,在person之外的地方无法访问其内部的变量,而通过提供闭包的形式来访问:

var person = function(){

//变量作用域为函数内部,外部无法访问

var name = "default";

return {

getName : function(){

return name;

},

setName : function(newName){

name = newName;

}

}

}();

print(person.name);//直接访问,结果为undefined

print(person.getName());

person.setName("abruzzi");

print(person.getName());

//得到结果如下:

//undefined

//default

//abruzzi

2.闭包的另一个重要用途是实现面向对象中的对象

传统的对象语言都提供类的模板机制,这样不同的对象(类的实例)拥有独立的成员及状态,互不干涉。虽然JavaScript中没有类这样的机制,但是通过使用闭包,我们可以模拟出这样的机制。还是以上边的例子来讲:

function Person(){

var name = "default";

return {

getName : function(){

return name;

},

setName : function(newName){

name = newName;

}

}

};

var john = new Person();

print(john.getName());

john.setName("john");

print(john.getName());

var jack = new Person();

print(jack.getName());

jack.setName("jack");

print(jack.getName());

//运行结果如下:

//default

//john

//default

//jack

由此代码可知,john和jack都可以称为是Person这个类的实例,因为这两个实例对name这个成员的访问是独立的,互不影响的。

闭包最重要的一个作用就是把某些变量隐藏起来,让外面的程序不能直接访问。

闭包的优点:增加了函数的灵活性;可以访问到函数内部的变量或对象;保护函数内的变量安全,加强了封装性

缺点:资源常驻内存,容易造成资源的浪费和引发性能问题

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小茜创作整理编辑!