对象的构造函数或init函数

时间:2012-02-14 03:28:05

标签: javascript oop

我正在寻找以下情况的构造函数或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函数?

6 个答案:

答案 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

};