我正在寻找以下情况的构造函数或init函数:
var Abc = function(aProperty,bProperty){
this.aProperty = aProperty;
this.bProperty = bProperty;
};
Abc.prototype.init = function(){
// Perform some operation
};
//Creating a new Abc object using Constructor.
var currentAbc = new Abc(obj,obj);
//currently I write this statement:
currentAbc.init();
初始化新对象时有没有办法调用init函数?
答案 0 :(得分:21)
您只需从构造函数
中调用init()
即可
var Abc = function(aProperty,bProperty){
this.aProperty = aProperty;
this.bProperty = bProperty;
this.init();
};
这是一个小提示,展示:http://jsfiddle.net/CHvFk/
答案 1 :(得分:12)
也许是这样的?
var Abc = function(aProperty,bProperty){
this.aProperty = aProperty;
this.bProperty = bProperty;
this.init = function(){
// Do things here.
}
this.init();
};
var currentAbc = new Abc(obj,obj);
答案 2 :(得分:5)
如果你的init方法应该保密:
var Abc = function(aProperty,bProperty){
function privateInit(){ console.log(this.aProperty);}
this.aProperty = aProperty;
this.bProperty = bProperty;
privateInit.apply(this);
};
我更喜欢这个。
答案 3 :(得分:1)
这个怎么样?
var Abc = function(aProperty,bProperty){
this.aProperty = aProperty;
this.bProperty = bProperty;
//init
(function () {
// Perform some operation
}.call(this));
};
var currentAbc = new Abc(obj,obj);
答案 4 :(得分:0)
构造函数应该是初始化实例的地方。如果不希望重新运行init方法,请在构造函数中保留与初始化相关的代码,并且如果代码变得又大又混乱,则将其拆分为多个特定的子方法(最好是私有方法)。
也就是说,如果您需要重新运行或“ 异步”调用init方法,那么我发现最灵活的解决方案是从您的{{1 }} 方法。这样,您可以创建一个实例,将其分配给变量,然后在一行中调用仍然单独的init方法。
this
答案 5 :(得分:-1)
为什么不将init函数中的东西放到构造函数中,如下所示:
var Abc = function(aProperty,bProperty){
this.aProperty = aProperty;
this.bProperty = bProperty;
// Perform some operation
};