【发布时间】:2016-09-07 17:54:48
【问题描述】:
我正在尝试使用下面的代码对 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 中解释的那样。
【问题讨论】:
-
你也可以添加.html代码吗?
-
我为副本添加了答案,但仅供参考,有一个 Babel 6 插件可以解决这个问题:stackoverflow.com/a/39376819/785065
标签: javascript class babeljs es6-class