源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JavaScript中消除闭包的一般方法介绍

  • 时间:2021-12-25 12:52 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript中消除闭包的一般方法介绍
JavaScript 的闭包是一个其主动发展的特性, 也是一个被动发展的特性. 也就是说, 一方面, JS 有了闭包能更好解决一些问题. 另一方面, JS 为了解决某些问题, 而不得不使用闭包勉强来解决问题. 前者这里不讨论, 如果 JS 闭包能更好的解决问题, 当然使用闭包更好. 我讨论的是后者, 是因为 JS 本身的限制, 而不得不磕磕绊绊地用闭包来解决的问题, 例如"变量只初始化一次"这样的需求. 常规的语言这样解决:
[u]复制代码[/u] 代码如下:
class Class{  function init(){   this.n = 0;  }  function func(){   this.n ++;   return this.n;  } } var obj = new Class();
JavaScript 一般会这样解决(使用闭包):
[u]复制代码[/u] 代码如下:
var obj = {  func : (function(){   var n = 0;   return function(){    n ++;    return n;   }  })() }
但我更建议采用这种方法(消除闭包):
[u]复制代码[/u] 代码如下:
function Class(){  var self = this;  self.n = 0;  self.func = function(){   self.n ++;   return self.n;  } } var obj = new Class();
因为后者的可扩展性更好. 当你需要实现对一个变量的不同操作时, 后一种可以只需要再定义一个不同的函数(也就是简单线性扩展), 而前一种(闭包)则需要完全重写(这就是为什么你经常听到重构这个词的原因).
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部