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

 更新时间:2015年03月16日 11:08:41   作者:idea''s blog  
这篇文章主要介绍了JavaScript中消除闭包的一般方法介绍,本文直接给出了操作示例,需要的朋友可以参考下

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();

因为后者的可扩展性更好. 当你需要实现对一个变量的不同操作时, 后一种可以只需要再定义一个不同的函数(也就是简单线性扩展), 而前一种(闭包)则需要完全重写(这就是为什么你经常听到重构这个词的原因).

相关文章

  • JS对象类型赋值和原生类型赋值原理解析

    JS对象类型赋值和原生类型赋值原理解析

    在本文中,我试图以最简洁的方式来阐明JavaScript编程原理中对象类型赋值和原生类型赋值之间的区别,以及它们各自是如何工作的,感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • Ajax::prototype 源码解读

    Ajax::prototype 源码解读

    Ajax::prototype 源码解读...
    2007-01-01
  • JS实现li标签的删除

    JS实现li标签的删除

    这篇文章主要为大家详细介绍了JS实现li标签的删除,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • js 毫秒转天时分秒的实例

    js 毫秒转天时分秒的实例

    下面小编就为大家分享一篇js 毫秒转天时分秒的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • js判断ie版本号的简单实现代码

    js判断ie版本号的简单实现代码

    本篇文章主要是对js判断ie版本号的简单实现代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • 使用Dropzone.js上传的示例代码

    使用Dropzone.js上传的示例代码

    本篇文章主要介绍了使用Dropzone.js上传的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • JS技巧动手实现红包兔子雨效果示例详解

    JS技巧动手实现红包兔子雨效果示例详解

    这篇文章主要为大家介绍了JS技巧动手实现红包兔子雨效果示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • JS实现状态栏跑马灯文字效果代码

    JS实现状态栏跑马灯文字效果代码

    这篇文章主要介绍了JS实现状态栏跑马灯文字效果代码,涉及JavaScript定时函数及流程控制的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • IE8对JS通过属性和数组遍历解析不一样的地方探讨

    IE8对JS通过属性和数组遍历解析不一样的地方探讨

    如果是非IE8浏览器例如(IE7、IE9、Chrome、FF,仅测试这几种)通过属性和数组遍历,其结果是一样的,但对于IE8,结果会有一点小小的差异,在IE8下会把原型链扩展方法当做一个属性输出,大家可以测试一下
    2013-05-05
  • php去掉json反斜杠的实例讲解

    php去掉json反斜杠的实例讲解

    在本篇文章里小编给大家整理了一篇关于php去掉json反斜杠的实例讲解,有兴趣的朋友们可以参考学习下。
    2021-10-10

最新评论