我正在尝试使用下面的代码对 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 在他的回答中解释的那样。