我是靠谱客的博主 殷勤未来,最近开发中收集的这篇文章主要介绍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();

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

最后

以上就是殷勤未来为你收集整理的JavaScript中消除闭包的一般方法介绍的全部内容,希望文章能够帮你解决JavaScript中消除闭包的一般方法介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(159)

评论列表共有 0 条评论

立即
投稿
返回
顶部