Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取object.function不是一个函数_Javascript - Fatal编程技术网

Javascript 获取object.function不是一个函数

Javascript 获取object.function不是一个函数,javascript,Javascript,我在javascript中创建了一个名为Group的类,其中包含一些方法。当我尝试测试这些方法时,控制台抛出一个x不是一个函数,我不知道为什么 这是密码 class Group { constructor(){ this.array= [] } add(number){ this.array.push(number); } delete(number){ this.array = filter(this.array, n => n != numb

我在javascript中创建了一个名为Group的类,其中包含一些方法。当我尝试测试这些方法时,控制台抛出一个x不是一个函数,我不知道为什么

这是密码

class Group {
  constructor(){
    this.array= []
  }
  add(number){
    this.array.push(number);
  }
  delete(number){
    this.array = filter(this.array, n => n != number);
  }
  has(number){
    for(let value in this.array){
      if(value === number) return true;
    return false;
    }
  }  
  static from(object){
    return this.array = object;
  }
}
以下是测试

let group = Group.from([10, 20]);
console.log(group);
console.log(group.has(10));
// → true
console.log(group.has(30));
// → false
group.add(10);
group.delete(10);
console.log(group.has(10));
// → false
如果因为我的代码不好而没有通过测试,我不介意自己修复它。我只是想知道为什么我会出错

非常感谢。

Group.from是一个静态方法-它的内部将引用Group类,而不是实例。所以

return this.array = object;
分配给类,并返回传递的对象本身,这不是您想要的

返回一个实例,使用new-更改构造函数以接受默认为空数组的数组,该数组被分配给实例的.array属性:

班级{ constructorarr=[]{ this.array=arr; } 地址号{ this.array.pushnumber; } 删除号码{ //需要定义筛选方法,此删除方法才能工作 //this.array=filterthis.array,n=>n!=number; } hasnumber{ 对于此.array中的let值{ 如果值===number,则返回true; } 返回false; } 静态fromarr{ 返回新的thisarr; //也可以返回新的Grouparr,但灵活性较低 } } 设group=group.from[10,20]; console.loggroup; console.loggroup.has10; // → 符合事实的 console.loggroup.has30; // → 错误的 第10组 from是一个静态方法-它的内部将引用Group类,而不是实例。所以

return this.array = object;
分配给类,并返回传递的对象本身,这不是您想要的

返回一个实例,使用new-更改构造函数以接受默认为空数组的数组,该数组被分配给实例的.array属性:

班级{ constructorarr=[]{ this.array=arr; } 地址号{ this.array.pushnumber; } 删除号码{ //需要定义筛选方法,此删除方法才能工作 //this.array=filterthis.array,n=>n!=number; } hasnumber{ 对于此.array中的let值{ 如果值===number,则返回true; } 返回false; } 静态fromarr{ 返回新的thisarr; //也可以返回新的Grouparr,但灵活性较低 } } 设group=group.from[10,20]; console.loggroup; console.loggroup.has10; // → 符合事实的 console.loggroup.has30; // → 错误的 第10组;