1

问题是如何在调用超级方法之前从构造函数中访问类静态属性?

class A
{
    constructor(input) {
        console.log('A', typeof new.target);
    }
}

class B extends A
{
    static template = '';

    constructor() {
        console.log('B', typeof new.target);
        super();
    }
}

class C extends B
{
    static template = 'CCC';
}

new C();

出于某种原因,我得到了:

B undefined
A undefined

代替

B function
A function

大约一年前我已经问过这个问题了。目前,其中提供的解决方案不再可行。

您可以在babel 控制台中尝试代码。有趣的是,这段代码在没有 babel 的情况下也能正常工作(例如在最新的 Chrome 中),并且当es2015复选框关闭时。

4

1 回答 1

1

这似乎是 babel 中的一个错误。我写了一个小插件来转换new.target

https://github.com/vbarbarosh/babel_plugin_transform_es2015_newtarget

$ npm install --save-dev git://github.com/vbarbarosh/babel_plugin_transform_es2015_newtarget
$ cat .babelrc
...
    "plugins": ["transform-es2015-newtarget"],
...
于 2016-08-26T06:46:59.620 回答