您现在的位置:首页 --> JavaScript --> 消除JavaScript闭包的一般方法
消除JavaScript闭包的一般方法
浏览:1336次 出处信息
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 循环为何可恨? (阅读:4589)
- 理解Javascript的闭包 (阅读:3879)
- GC与JS内存泄露 (阅读:3611)
- JavaScript的闭包问题 (阅读:3441)
- 闭包漫谈(从抽象代数及函数式编程角度) (阅读:3231)
- 在回调和闭包中的内存泄漏 (阅读:3196)
- 什么是闭包(Closure)? (阅读:2951)
- 闭包与作用域 (阅读:2950)
- 前端代码之丑(一):分支化技巧 (阅读:2865)
- 闭包漫谈(从抽象代数及函数式编程角度) (阅读:2802)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:JavaScript实现的抛物线运动效果
后一篇:为什么++[[]][+[]]+[+[]]=10? >>
文章信息
- 作者:ideawu 来源: idea's blog
- 标签: 闭包
- 发布时间:2014-12-30 12:27:21
建议继续学习
近3天十大热文
-
[64] memory prefetch浅析
-
[57] find命令的一点注意事项
-
[32] Oracle bbed工具的编译
-
[31] 读书笔记-壹百度:百度十年千倍的29条法则
-
[29] 卡诺模型―设计品质与设计价值的思考
-
[29] 基本排序算法的PHP实现
-
[25] 程序员技术练级攻略
-
[24] 8大实用又重要Mac使用技巧
-
[23] 小屏幕移动设备网页设计注意事项
-
[21] 杨建:网站加速--Cache为王篇