Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以用这种方式在javascript中初始化对象吗?_Javascript_Object_Initialization - Fatal编程技术网

可以用这种方式在javascript中初始化对象吗?

可以用这种方式在javascript中初始化对象吗?,javascript,object,initialization,Javascript,Object,Initialization,我想在javascript中初始化一个对象,直接调用属于它的方法: var obj = (function(){ return{ init: function(){ console.log("initialized!"); return this; }, uninit: function(x){ console.log("uninitia

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

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

  //later
  obj.uninit();
  obj.init();
这个具体的例子不起作用,有类似的东西吗?

编辑:
init()
返回
这个
,谢谢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引用所必需的,所以我们可以稍后调用它。