【问题标题】:Is possible to initialize an object in javascript in this way?可以用这种方式在javascript中初始化一个对象吗?
【发布时间】:2010-05-15 15:29:20
【问题描述】:

我想在 javascript 中初始化一个对象,直接调用属于它的方法:

  var obj = (function(){
      return{
          init: function(){
              console.log("initialized!");
              return this;
          },
          uninit: function(x){
              console.log("uninitialized!");
          }
      };
  }).init();

  //later
  obj.uninit();
  obj.init();

这个具体例子不行,有没有类似的?

【问题讨论】:

    标签: javascript object initialization


    【解决方案1】:

    编辑:init() 返回 this,谢谢 Guffa。

    您只是定义了一个匿名函数,而不是实际调用它。要立即调用它,请添加一对括号:

    var obj = (function(){
      return{
          init: function(){
              console.log("initialized!");
              return this;
          },
          uninit: function(x){
              console.log("uninitialized!");
          }
      };
    })().init();
    

    【讨论】:

    • 另外,init 函数需要返回 this 以便在 obj 变量中放入一些内容。
    • 好的,感谢 Guffa 的澄清,我已经编辑了我的问题。
    • 在这种情况下,'var obj =' 并不是必需的,是吗?
    • 据我所知,它已经是全局变量,不需要在这里定义 var。但是如果您不在函数中定义 var,它将在全局上下文中定义,因此可能会出错。
    • @Kooilnc:这里 var obj = 是获取 obj 引用所必需的,所以我们可以稍后调用它。
    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2013-06-10
    • 2017-01-28
    • 2022-08-14
    • 2019-12-01
    • 2013-01-19
    • 2020-12-07
    相关资源
    最近更新 更多