JavaScript中消除闭包的一般方法介绍
JavaScript的闭包是一个其主动发展的特性,也是一个被动发展的特性.也就是说,一方面,JS有了闭包能更好解决一些问题.另一方面,JS为了解决某些问题,而不得不使用闭包勉强来解决问题.
前者这里不讨论,如果JS闭包能更好的解决问题,当然使用闭包更好.
我讨论的是后者,是因为JS本身的限制,而不得不磕磕绊绊地用闭包来解决的问题,例如"变量只初始化一次"这样的需求.
常规的语言这样解决:
classClass{
functioninit(){
this.n=0;
}
functionfunc(){
this.n++;
returnthis.n;
}
}
varobj=newClass();
JavaScript一般会这样解决(使用闭包):
varobj={
func:(function(){
varn=0;
returnfunction(){
n++;
returnn;
}
})()
}
但我更建议采用这种方法(消除闭包):
functionClass(){
varself=this;
self.n=0;
self.func=function(){
self.n++;
returnself.n;
}
}
varobj=newClass();
因为后者的可扩展性更好.当你需要实现对一个变量的不同操作时,后一种可以只需要再定义一个不同的函数(也就是简单线性扩展),而前一种(闭包)则需要完全重写(这就是为什么你经常听到重构这个词的原因).
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语