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()