我无法使用push()方法来使用新的Food构造函数在我的厨房数组中创建新项目。我需要调用一个函数,该函数会将对象添加到数组中,并且我希望ID值根据数组的当前长度来计算。
我试图创建类似的功能
groceries = function ()
{
pantry.push(new Food)};
var pantry =
[
egg = new Food (1, "Egg", ...)
...
...
];
function Food (id, name,...)
{
this.id = id;
this.name = name;
...
};
this.inquiry = function() {
return '\n' + this.name +
'\n' +
};
我可以使用浏览器和pantry.push(chicken = new Food(... arguments...);
,但是我缺乏有关如何构造可使过程更整洁的功能的知识。我不确定这是否就是事实。也许我在考虑构造函数时无法做到这一点。我很新。
我希望有一种方法可以键入一个函数,该函数将使用构造函数格式化新变量,然后将其推入预制变量pantry的末尾。我希望能够在浏览器中使用此功能。
到目前为止,我遇到诸如未定义函数或语法错误之类的错误。
答案 0 :(得分:0)
我认为您的意思是class
而不是功能。 new
仅可用于class
。如下所示。
class Food {
constructor(id, name) {
this.id = id;
this.name = name;
}
inquiry() {
return '\n' + this.name + '\n';
}
}
var pantry = [ new Food(1, "Egg") ];
console.log(pantry);
console.log(pantry[0].inquiry());
答案 1 :(得分:0)
这是您可以使用的另一种解决方案
class FoodStore{
constructor() {
this.data = [];
}
add(name){
this.data.push({id: this.data.length,name});
}
toList(){
return this.data;
}
}
var store = new FoodStore();
store.add("test");
//inquiry
console.log(store.toList()[0].name);
// All items
console.log(store.toList());