TypeError:function不是构造函数(评估' new self.f(1)')

时间:2017-04-17 08:08:10

标签: javascript this self

我试图在另一个方法中使用方法作为构造函数。但是当我这样做时,我得到以下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);

自我有参考错误吗?

1 个答案:

答案 0 :(得分:3)

MDN: Method definitions

  

方法定义不可构造   所有方法定义都不是构造函数,如果您尝试实例化它们,则会抛出TypeError。

标准以这种方式定义它的一个原因可能是您可以在方法定义中使用super.foo()。但是如果你将这个方法用作构造函数,那么就会有你继承的类,所以super.foo()会失败。