babeljs class 在构造函数中是静态的
babeljs class static in constructor
问题是如何从构造函数 before 中访问 class 静态属性调用了 super 方法?
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
我 already asked this question 大约一年前。目前,里面提供的解决方案已经行不通了。
您可以试试babel console中的代码。有趣的是这段代码在没有 babel 的情况下工作正常(例如在最新的 Chrome 中),并且当 es2015 复选框关闭时。
这似乎是 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"],
...
问题是如何从构造函数 before 中访问 class 静态属性调用了 super 方法?
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
我 already asked this question 大约一年前。目前,里面提供的解决方案已经行不通了。
您可以试试babel console中的代码。有趣的是这段代码在没有 babel 的情况下工作正常(例如在最新的 Chrome 中),并且当 es2015 复选框关闭时。
这似乎是 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"],
...