JavaScript:调用类对象';函数将值添加到对象数组中
下面的代码定义了一个对象“ideas”,并创建了一个名为“Goals”的类对象: 下面还有另一个代码块,显示了我将在类对象上调用的函数列表: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
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 = {};
}
}