实例化对象

时间:2017-11-07 19:49:15

标签: javascript

a = function(x){

this.c = x;

this.c();

}

a.prototype.b = function () {

alert("B");

}

a.prototype.c = function () {

//overwrite this

}

var z = new a(this.b);

我知道使用this.b是错误的但无论如何我可以引用一个对象方法并在实例化对象时将其作为参数传递?

我知道对象实例还没有存在,但原型确实存在。

我无法粘贴上下文,因为它太复杂了我害怕。基本上我想在某些情况下覆盖prototype.b并在实例化时而不是之后执行。主要是为了更漂亮的代码。但是如果不能做到这一点就不用担心了。

1 个答案:

答案 0 :(得分:1)

您需要从构造函数中引用它。

a = function(x) {
  this.c = x;
  this.c();
}

a.prototype.b = function() {
  alert("B");
}

var z = new a(a.prototype.b);

或者发送所需方法的名称会更好,并让构造函数执行此操作。

a = function(x) {
  if (x in a.prototype) {
    this.c = a.prototype[x];
    this.c();
  }
}

a.prototype.b = function() {
  alert("B");
}

var z = new a("b");