我试图在另一个方法中使用方法作为构造函数。但是当我这样做时,我得到以下TypeError:
TypeError: function is not a constructor (evaluating 'new self.f(1)')
示例代码为:
class C{
constructor(v){
this.f(v);
this.g(v);
}
f(v){
this.v = v;
}
g(v){
var self = this;
function h(v){
this.v = v;
this.w = new self.f(1);
console.log(this.w);
}
new h(1)
}
}
var c = new C(1);
自我有参考错误吗?
答案 0 :(得分:3)
方法定义不可构造 所有方法定义都不是构造函数,如果您尝试实例化它们,则会抛出TypeError。
标准以这种方式定义它的一个原因可能是您可以在方法定义中使用super.foo()
。但是如果你将这个方法用作构造函数,那么就会有你继承的类,所以super.foo()
会失败。