Javascript 用自定义方法扩展数组

Javascript 用自定义方法扩展数组,javascript,Javascript,我想扩展数组,以便向其中添加自定义方法 以下是我的尝试: 类DataArray扩展了数组{ 构造函数(){ 超级(); } 添加(项目){ 这个.推(项),; } } const dataArray=new dataArray(); dataArray.add(1)如果您想改进内置javascript数组,可以使用原型。(在本例中,将方法remove添加到javascript内置数组类型以从数组中移除给定元素): Array.prototype.remove=函数(){ var数组=这个; f

我想扩展
数组
,以便向其中添加自定义方法

以下是我的尝试:

类DataArray扩展了数组{
构造函数(){
超级();
}
添加(项目){
这个.推(项),;
}
}
const dataArray=new dataArray();

dataArray.add(1)如果您想改进内置javascript数组,可以使用原型。(在本例中,将方法remove添加到javascript内置数组类型以从数组中移除给定元素):

Array.prototype.remove=函数(){
var数组=这个;
for(var i=0;i
如果您想改进内置javascript数组,可以使用原型。(在本例中,将方法remove添加到javascript内置数组类型以从数组中移除给定元素):

Array.prototype.remove=函数(){
var数组=这个;
for(var i=0;i
似乎不支持速记方法定义,请尝试使用箭头函数赋值:

类数据数组扩展数组{
构造函数(){
超级();
}
添加=(项目)=>{
这个.推(项),;
}
}
const dataArray=new dataArray();
dataArray.add(1);

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

类DataArray扩展了数组{
构造函数(){
超级();
}
添加=(项目)=>{
这个.推(项),;
}
}
const dataArray=new dataArray();
dataArray.add(1);

log(数据数组)我在谷歌chrome控制台上试用过。它很好用。你可以像这样直接添加,如果你想保持它的全局性,对吗?Array.prototype.add=Array.prototype。push@ShankarShastri是的,我刚刚意识到只有在使用Babel编译它(或typescript)时才会出现错误。您可以从运行代码段“只有当我使用Babel或Typescript编译代码时才会发生错误”中看到这一点。至少Babel不支持扩展内置类,因为在ES5中也不可能这样做(即,您无法真正复制它)。请参阅@FelixKling,因此,除非我编译到ES6,否则我无法使用此功能?我在google chrome控制台中尝试过。它很好用。你可以像这样直接添加,如果你想保持它的全局性,对吗?Array.prototype.add=Array.prototype。push@ShankarShastri是的,我刚刚意识到只有在使用Babel编译它(或typescript)时才会出现错误。您可以从运行代码段“只有当我使用Babel或Typescript编译代码时才会发生错误”中看到这一点。至少Babel不支持扩展内置类,因为在ES5中也不可能这样做(即,您无法真正复制它)。请参阅@FelixKling,因此除非编译到ES6,否则我不能使用此功能?当前,这只是
class
中的无效语法。这不是ES6。公共类字段是一个建议
foo(){…}
是在类中定义方法的正确方法。不,不是无效语法@Ignacio您的代码无效,不是OP中的代码。这不会改变Babel不正式支持扩展内置类的事实。这才是真正的问题,而不是他们如何定义方法。目前,这只是
中的无效语法。这不是ES6。公共类字段是一个建议
foo(){…}
是在类中定义方法的正确方法。不,不是无效语法@Ignacio您的代码无效,不是OP中的代码。这不会改变Babel不正式支持扩展内置类的事实。这是真正的问题,而不是他们如何定义方法。但这不是这里的问题。但这不是这里的问题。
  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]);