首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript javascript(示例分析)

javascript javascript(示例分析)
EN

Stack Overflow用户
提问于 2013-06-25 01:26:31
回答 2查看 167关注 0票数 0

我在关注wikipedia's example

代码语言:javascript
运行
复制
var counter = (function(){
  var i = 0;

  return {
    get: function(){
      return i;
    },
    set: function( val ){
      i = val;
    },
    increment: function() {
      return ++i;
    }
  };
}());

我知道里面有一个闭包,它用i变量保存堆栈帧,我可以创建多个计数器--这很清楚。但是为什么这里要使用Life语法呢?如果它在没有它的情况下重写代码,它的工作方式是相同的:

代码语言:javascript
运行
复制
var counter2 = function(){
  var i = 0;

  return {
    get: function(){
      return i;
    },
    set: function( val ){
      i = val;
    },
    increment: function() {
      return ++i;
    }
  };
};

c2 = counter2();

我希望能在维基百科的例子中解释一下生活是怎么回事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-25 01:34:47

不同之处在于您实际定义了一个函数。在您的变体中,counter2仍将作为object c2的原型保存在内存中。

当您只创建特定类型的单个对象而不是原型以供以后重用时,可以使用Iffys。

票数 2
EN

Stack Overflow用户

发布于 2013-06-25 01:27:46

立即调用该函数将使其成为匿名的。这样做的好处是,您不会在名称空间中添加以后不需要的函数名。

没有其他区别,它可能看起来像一个细节,但是如果你不重用它,为什么要命名这个函数呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17281404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档