Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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 在JS中创建并初始化对象_Javascript - Fatal编程技术网

Javascript 在JS中创建并初始化对象

Javascript 在JS中创建并初始化对象,javascript,Javascript,我试图一次创建并初始化一个对象。因此,与其这样做 var a = function(){}; a.prototype.blah = function(){return "blah"}; var b = new a(); 我想用这个 var a = function(){ return new function init() { this.extend = init.prototype; this.creator = "Levi"; this.c

我试图一次创建并初始化一个对象。因此,与其这样做

var a = function(){};

a.prototype.blah = function(){return "blah"};

var b  = new a();
我想用这个

var a = function(){
    return new function init() {
      this.extend = init.prototype;
      this.creator = "Levi";
      this.create = function(){
          return new init();
      }
      // other stuff
    };
  }();

  a.extend.blah = function(){return "blah";};
有更好的方法吗?我特别不确定是否在我的代码中使用
返回新函数
。谢谢


编辑:为了澄清,我想用它作为对象原型的一种包装,我不想使用像这样的对象文本
var a={extend:,creator:“Levi”}

一个备选方案可以是:

var a = (function(){

  var A = function() {
    this.creator = "Levi";
  }

  A.prototype.blah = function() {
    return "blah"
  };

  return new A;

})();

这对于一次性对象可能很有用,
A

我也会关心它:
(新函数x(){return 1})(
返回类型错误,因为
函数(…){..
构造在不使用
的情况下创建函数。实际上在函数对象本身上调用了
new
(它被解析为
returnnew(function..)
)。这是真的需要吗?我确实想要返回
a的一个实例
,它不是“a的一个实例”,而是“从一个匿名构造函数[function]创建的一个实例,然后绑定到a”。这就是我质疑它的原因——这是一种令人困惑的设置方式:)请注意,由于它已经是一个实例,因此实际上没有理由避免使用一次性属性。@pst您是否介意详细说明一下“从匿名构造函数创建的实例”的含义。谢谢IIFE的主体被解析为
returnnew(function..)
,其中
function..
表示匿名构造函数。它在语义上等价于:
functioninit(){..};返回新的init()