Jos*_*gel 17 javascript ecmascript-6 babeljs
我正在使用Babel扩展我的类与内置的本机数组
class NewArray extends Array {
first() {
return this[0];
}
}
var a = new NewArray(1, 2, 3);
console.log(a.length); // 3
console.log(a); // [ 1, 2, 3 ]
console.log(a.first()); // trigger error
Run Code Online (Sandbox Code Playgroud)
在a.first()中,我收到此错误:
console.log(a.first());
^
TypeError: a.first is not a function
Run Code Online (Sandbox Code Playgroud)
我应该做些什么来扩展内置本机?
谢谢!
Sul*_*han 16
Babel不支持扩展本机类.它已在5.2.17版本中删除(请参阅此提交)
它已被删除,因为它无法正常工作,请参阅错误:https : //phabricator.babeljs.io/T1424
它不太可能被添加,因为它不是可以模拟的功能.我们将不得不等待浏览器中的本机支持(一些已经在实验模式中支持它).这也意味着它目前在不同的浏览器中表现不同.
log*_*yth 12
默认情况下,Babel无法处理扩展的内置类型.在巴贝尔6,你现在可以做到这一点https://www.npmjs.com/package/babel-plugin-transform-builtin-extend做
"plugins": [
["transform-builtin-extend", {
globals: ["Array"]
}]
]
Run Code Online (Sandbox Code Playgroud)
请记住,这可能是旧版IE等旧版环境中的一个问题,因此您是否应该扩展内置类型取决于您是否关心它.
| 归档时间: |
|
| 查看次数: |
4443 次 |
| 最近记录: |