Babel 'protoToAssign' 转换器和 ES6 class 继承
Babel 'protoToAssign' transformer and ES6 class inheritance
这里是 simple plunker example 涉及 class 继承,垫片和 Babel 选项设置为 stage: 0, loose: 'all'
:
class Hello {
static address = ', world!';
greeting = 'Hello';
constructor() {
this.greet();
}
greet() {
document.write(this.greeting + Hello.address);
}
}
class Hi extends Hello {
greeting = 'Hi';
constructor() {
super();
}
}
new Hi().greet();
显然,它在 IE5.5+ 中正常工作。
在什么情况下,Babel spec.protoToAssign
转换器对于 ES6/ES7 针对旧版浏览器的转译 OOP 代码可能是有益的(或不受欢迎的)?
ES6class继承也意味着
Hi.address
会起作用,因为 Hi
继承自 Hello
。如果没有 protoToAssign
,这将无法在 IE<=10.
中运行
不过,一般情况与该页面上的描述完全相同。 IE<=10 不支持赋值 __proto__
所以如果你依赖依赖它的行为,它将不起作用。
Babel 的 caveats 页面涵盖了所有内容。
这里是 simple plunker example 涉及 class 继承,垫片和 Babel 选项设置为 stage: 0, loose: 'all'
:
class Hello {
static address = ', world!';
greeting = 'Hello';
constructor() {
this.greet();
}
greet() {
document.write(this.greeting + Hello.address);
}
}
class Hi extends Hello {
greeting = 'Hi';
constructor() {
super();
}
}
new Hi().greet();
显然,它在 IE5.5+ 中正常工作。
在什么情况下,Babel spec.protoToAssign
转换器对于 ES6/ES7 针对旧版浏览器的转译 OOP 代码可能是有益的(或不受欢迎的)?
ES6class继承也意味着
Hi.address
会起作用,因为 Hi
继承自 Hello
。如果没有 protoToAssign
,这将无法在 IE<=10.
不过,一般情况与该页面上的描述完全相同。 IE<=10 不支持赋值 __proto__
所以如果你依赖依赖它的行为,它将不起作用。
Babel 的 caveats 页面涵盖了所有内容。