您现在的位置:首页 --> JavaScript --> 消除JavaScript闭包的一般方法
消除JavaScript闭包的一般方法
浏览:1630次 出处信息
JavaScript 的闭包是一个其主动发展的特性, 也是一个被动发展的特性. 也就是说, 一方面, JS 有了闭包能更好解决一些问题. 另一方面, JS 为了解决某些问题, 而不得不使用闭包勉强来解决问题.
前者这里不讨论, 如果 JS 闭包能更好的解决问题, 当然使用闭包更好.
我讨论的是后者, 是因为 JS 本身的限制, 而不得不磕磕绊绊地用闭包来解决的问题, 例如"变量只初始化一次"这样的需求.
常规的语言这样解决:
class Class{
function init(){
this.n = 0;
}
function func(){
this.n ++;
return this.n;
}
}
var obj = new Class();
JavaScript 一般会这样解决(使用闭包):
var obj = {
func : (function(){
var n = 0;
return function(){
n ++;
return n;
}
})()
}
但我更建议采用这种方法(消除闭包):
function Class(){
var self = this;
self.n = 0;
self.func = function(){
self.n ++;
return self.n;
}
}
var obj = new Class();
因为后者的可扩展性更好. 当你需要实现对一个变量的不同操作时, 后一种可以只需要再定义一个不同的函数(也就是简单线性扩展), 而前一种(闭包)则需要完全重写(这就是为什么你经常听到重构这个词的原因).
建议继续学习:
- for 循环为何可恨? (阅读:5089)
- 理解Javascript的闭包 (阅读:4373)
- GC与JS内存泄露 (阅读:4217)
- JavaScript的闭包问题 (阅读:3970)
- 在回调和闭包中的内存泄漏 (阅读:3709)
- 闭包漫谈(从抽象代数及函数式编程角度) (阅读:3557)
- 闭包与作用域 (阅读:3447)
- 什么是闭包(Closure)? (阅读:3459)
- 闭包漫谈(从抽象代数及函数式编程角度) (阅读:3401)
- 前端代码之丑(一):分支化技巧 (阅读:3293)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:JavaScript实现的抛物线运动效果
后一篇:为什么++[[]][+[]]+[+[]]=10? >>
文章信息
- 作者:ideawu 来源: idea's blog
- 标签: 闭包
- 发布时间:2014-12-30 12:27:21
建议继续学习
近3天十大热文
-
[918] WordPress插件开发 -- 在插件使用 -
[134] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[52] 海量小文件存储 -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 全站换域名时利用nginx和javascri -
[51] Innodb分表太多或者表分区太多,会导致内 -
[50] 用 Jquery 模拟 select -
[49] CloudSMS:免费匿名的云短信 -
[48] 分享一个JQUERY颜色选择插件
