当用new实例化对象时,Javascript调用构造函数

时间:2016-12-30 01:16:55

标签: javascript constructor

我使用构造函数在javascript中实例化一个对象。像这样:

var Constructor = function(){
    this.property1 = "1";    
}
var child = new Constructor();
console.log(child) // Constructor {property1: "1"}

我想在通过child关键字实例化new对象时调用一次方法。我希望此方法仅适用于Constructor

这是我到目前为止所提出的:

var Constructor = function(property2){
    this.property1 = "1";
    (function(){ this.property2 = property2}).call(this);
}
var child = new Constructor("2")
console.log(child) // Constructor {property1: "1", property2: "2"}

这是在Javascript中解决此问题的正确方法吗?是否有更清洁或更强大的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

你正在做什么似乎没用,因为你可以直接使用

var Constructor = function(property2) {
  this.property1 = "1";
  this.property2 = property2;
};

但是如果你的构造函数做了复杂的事情而你想要的是将它们拆分成更好的抽象部分,那么我个人会把这些部分带到外面以便有一个更清晰的构造函数:

var Constructor = (function() {
  function someLogic(instance, value) {
    instance.property2 = value;
  }
  return function Constructor(property2) {
    this.property1 = "1";
    someLogic(this, property2);
  };
})();