【发布时间】:2018-06-17 05:25:57
【问题描述】:
我想扩展一个Array 以便为其添加自定义方法。
这是我的尝试:
class DataArray extends Array {
constructor() {
super();
}
add(item) {
this.push(item);
}
}
const dataArray = new DataArray();
dataArray.add(1);
但给出错误Uncaught TypeError: dataArray.add is not a function
只有当我使用 Babel 或 Typescript 编译代码时才会出现错误。
【问题讨论】:
-
我在 google chrome 控制台中试过了。它工作正常。
-
你可以直接这样添加,如果你想保持全局对吗? Array.prototype.add = Array.prototype.push
-
@ShankarShastri 是的,我刚刚意识到只有在使用 Babel 编译它(或打字稿)时才会出现错误。您可以通过运行 sn-p 看到这一点
-
“只有当我使用 Babel 或 Typescript 编译代码时才会出现错误。” 至少 Babel 不支持扩展内置类,因为那不是在 ES5 中也是可能的(即你不能真正复制它)。见Extending built-in natives in ES6 with Babel
-
@FelixKling,所以除非我编译到 ES6,否则我不能使用这个功能?
标签: javascript