我想扩展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编译代码时才会发生错误。
答案 0 :(得分:0)
似乎不支持简写方法定义,请尝试使用箭头函数赋值:
class DataArray extends Array {
constructor() {
super();
}
add = (item) => {
this.push(item);
}
}
const dataArray = new DataArray();
dataArray.add(1);
console.log(dataArray);
你的版本仍然很好,它可能是这个REPL中的解释器版本,如果你尝试自己的例子在jsbin中说,它可以正常工作
答案 1 :(得分:-2)
如果您想改进内置的javascript数组,可以使用原型。 (在此示例中,将方法remove添加到javascript内置Array类型以从Array中删除给定元素):
Array.prototype.remove = function () {
var array = this;
for (var i = 0; i < arguments.length; i++) {
for (var j = 0; j < array.length; j++) {
if (arguments[i] === array[j]) {
array.splice(j, 1);
}
}
}
return array;
};
// Usage: [1, 2, 3].remove([1, 2]);