您现在的位置:首页 --> JavaScript --> 消除JavaScript闭包的一般方法
消除JavaScript闭包的一般方法
浏览:1220次 出处信息
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 循环为何可恨? (阅读:4440)
- 理解Javascript的闭包 (阅读:3812)
- GC与JS内存泄露 (阅读:3455)
- JavaScript的闭包问题 (阅读:3297)
- 闭包漫谈(从抽象代数及函数式编程角度) (阅读:3157)
- 在回调和闭包中的内存泄漏 (阅读:3024)
- 什么是闭包(Closure)? (阅读:2901)
- 前端代码之丑(一):分支化技巧 (阅读:2800)
- 闭包与作用域 (阅读:2807)
- 闭包漫谈(从抽象代数及函数式编程角度) (阅读:2746)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:JavaScript实现的抛物线运动效果
后一篇:为什么++[[]][+[]]+[+[]]=10? >>
文章信息
- 作者:ideawu 来源: idea's blog
- 标签: 闭包
- 发布时间:2014-12-30 12:27:21
建议继续学习
近3天十大热文
- [67] 如何拿下简短的域名
- [65] Go Reflect 性能
- [62] Oracle MTS模式下 进程地址与会话信
- [60] IOS安全–浅谈关于IOS加固的几种方法
- [58] 图书馆的世界纪录
- [57] android 开发入门
- [56] 【社会化设计】自我(self)部分――欢迎区
- [50] 视觉调整-设计师 vs. 逻辑
- [50] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则