Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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:调用类对象';函数将值添加到对象数组中_Javascript_Function_Class_Object_Methods - Fatal编程技术网

JavaScript:调用类对象';函数将值添加到对象数组中

JavaScript:调用类对象';函数将值添加到对象数组中,javascript,function,class,object,methods,Javascript,Function,Class,Object,Methods,下面的代码定义了一个对象“ideas”,并创建了一个名为“Goals”的类对象: 下面还有另一个代码块,显示了我将在类对象上调用的函数列表: module.exports = { reset: function() { ideas = {}; }, add: function(name, task) { // saves a task for a given person ideas[name] = task; } }; Goals.add("coll

下面的代码定义了一个对象“ideas”,并创建了一个名为“Goals”的类对象:

下面还有另一个代码块,显示了我将在类对象上调用的函数列表:

module.exports = {
  reset: function() {
    ideas = {}; 
  },
  add: function(name, task) {
    // saves a task for a given person
    ideas[name] = task;
  }
};

Goals.add("college", { content: "apply to 4 schools" });
当我运行上面的代码时,我得到以下错误:

TypeError: Goals.add is not a function
我希望在tasks对象中返回以下内容:

{ college: [{apply to 4 schools}] } 

我做错了什么?

在当前代码中,导出的内容与在
目标
类上调用的方法之间没有链接,您需要在定义
类目标
的代码中导入该模块,并在类中添加作为静态方法导入的所需函数,例如:

//const action=require('path/to/add/reset/module');如果您的目的是使其可重复使用
//模仿进口
常量动作={
重置:函数(){
思想={};
},
添加:功能(名称、任务){
//为给定人员保存任务
想法[名称]=想法[名称]?想法[名称].concat(任务):[任务];
}
};
让思想={};
班级目标{
构造函数(){
}
静态添加(名称、任务){
添加(名称、任务);
}
添加(名称、任务){
添加(名称、任务);
}
}
目标.增加(“学院”{内容:“申请4所学校”});
console.log(ideas);
//更好的方法
常量目标=新目标();
目标.增加(“学院”{内容:“申请2所学校”});

console.log(ideas)我相信你看起来像这样

课程目标{
构造函数(){
this.ideas={};
}
重置(){
this.ideas={};
}
添加(名称、任务){
//为给定人员保存任务
this.ideas[名称]=任务;
}
}
var目标=新目标();
目标。添加(“学院”{
内容:“申请4所学校”
});

console.log(目标)目标应该有自己的想法、属性和操作方法,例如

class Goals {
  constructor() {
    this.ideas = {};
  }

  add(name, task) {
    this.ideas[name] = task;
  }

  reset() {
    this.ideas = {};
  }
}

这在某种程度上取决于您的用例,但是如果您需要有两个不同的目标对象(即,如果您有针对不同用户的目标),那么绝对有必要有每个实例的想法。

第一个代码示例和第二个代码示例之间没有关系。为什么你认为目标有一个添加方法;鉴于我当前的代码设置,如何访问add方法?不清楚你在问什么。为什么您希望目标使用的方法与类分开?我明白了,我需要将函数作为方法添加到我的类中?您有什么理由希望它们分开吗?@Andy这个逻辑有问题吗?:)我至少可以看到一个问题。@Andy请告诉我,如果可能的话,我会更正它,或者我会删除这个答案:)你正在调用类而不是实例上的
add
。@Andy不确定OP是否要调用类而不是实例上的方法,这就是为什么我将
add
方法设置为静态,以便可以在类上调用它。我不知道为什么OP会将
添加
重置
放在单独的模块中,可能是为了重复使用。我将等待OP的响应,否则我将删除此答案。对于响应,我希望我的代码将生成一个如下所示的ideas对象:ideas={“学院”:[{“内容”:“申请4所学校”}]}
class Goals {
  constructor() {
    this.ideas = {};
  }

  add(name, task) {
    this.ideas[name] = task;
  }

  reset() {
    this.ideas = {};
  }
}