我下面的代码定义了一个对象“想法”,并创建了一个名为“目标”的类对象:
let ideas = {};
class Goals {
constructor () {
}
}
然后,下面还有另一个代码块,显示了将在类对象上调用的函数的列表:
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
我希望在task对象中返回以下内容:
{ college: [{apply to 4 schools}] }
我在做什么错了?
答案 0 :(得分:1)
我相信您正在寻找类似的东西。
class Goals {
constructor() {
this.ideas = {};
}
reset() {
this.ideas = {};
}
add(name, task) {
// saves a task for a given person
this.ideas[name] = task;
}
}
var goal = new Goals();
goal.add("college", {
content: "apply to 4 schools"
});
console.log(goal);
答案 1 :(得分:0)
在当前代码中,导出的内容与在Goals
类上调用的方法之间没有链接,您需要在定义class Goals
的代码中导入该模块并添加在类中作为 static 方法导入的必需函数,例如:
//const action = require('path/to/add/reset/module'); if your intention is to make it re-usable
//emulating an import
const action = {
reset: function() {
ideas = {};
},
add: function(name, task) {
// saves a task for a given person
ideas[name] = ideas[name] ? ideas[name].concat(task) : [task];
}
};
let ideas = {};
class Goals {
constructor () {
}
static add(name, task){
action.add(name, task);
}
add(name, task){
action.add(name, task);
}
}
Goals.add("college", { content: "apply to 4 schools" });
console.log(ideas);
//better way
const goals = new Goals();
goals.add("college", { content: "apply to 2 schools" });
console.log(ideas);
答案 2 :(得分:0)
目标可能应该拥有自己的idea属性和操纵它们的方法,例如
class Goals {
constructor() {
this.ideas = {};
}
add(name, task) {
this.ideas[name] = task;
}
reset() {
this.ideas = {};
}
}
这在某种程度上取决于您的用例,但是如果您需要有两个不同的目标对象(即,如果您有针对不同用户的目标),则绝对有必要基于实例。