我正在尝试使用下面的代码继承Array对象。如果您在浏览器中运行代码,它可以正常工作。但是,如果我将此代码放在.js文件中,并将该文件包含<script>
标记,则.add()
方法未定义。
class Collection extends Array {
constructor(data) {
super(...data);
}
add(model) {
this.push(model);
}
}
const coll = new Collection(['item1', 'item2']);
console.log(coll); // -> ['item1', 'item2']
console.log(coll.add); // -> undefined
加载页面时,.add()
未定义。但是,当我将完全相同的代码复制粘贴到控制台中时,它就能正常工作。
发生了什么事?
更新 我也在使用Babel.js(v6.x)进行转换,结果证明这是问题所在,正如Fuechter在his answer中解释的那样。
答案 0 :(得分:1)
修正:
a.cc: In function ‘cplx f(const std::vector<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >&, const cplx&)’:
a.cc:40:40: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
for (unsigned int k=coeff.size(); k>=0; --k)
~^~~
为什么:
Babel不支持扩展本机类。它已在5.2.17版本中删除(请参阅此提交)
它已被删除,因为它无法正常工作,请参阅错误:https://phabricator.babeljs.io/T1424
它不太可能被添加,因为它不是可以模拟的功能。我们将不得不等待浏览器中的本机支持(一些已经在实验模式中支持它)。这也意味着它目前在不同浏览器中的表现会有所不同。
参考:Link