首页 > 解决方案 > 使用自定义方法扩展数组

问题描述

我想扩展一个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 编译代码时发生。

标签: javascript

解决方案


似乎它不支持速记方法定义,请尝试使用箭头函数赋值:

class DataArray extends Array {
  constructor() {
    super();
  }
  add = (item) => {
    this.push(item);
  }
}

const dataArray = new DataArray();
dataArray.add(1);
console.log(dataArray);

你的版本仍然很好,它可能是这个 REPL 中的解释器版本,如果你在 jsbin 中尝试你自己的例子,它工作正常


推荐阅读