将多个项目推入 class 实例中的数组
Pushing multiple items into an array within an instance of a class
我正在尝试构建 addTopping 方法,以便它可以接受多种浇头而不是一个浇头推入浇头数组。我不确定如何解决这个问题。我已经看到其他一些使用 .push.apply()
的帖子,这在我的案例中不起作用,因为它创建了一个对象。
class Pizza {
constructor(size, crust, stuffedcrust) {
this.size = size;
this.crust = crust;
this.stuffedcrust = stuffedcrust;
this.toppings = ["Cheese"];
}
addTopping(topping) {
this.toppings.push(topping);
}
removeTopping(topping) {
let index = this.toppings.indexOf(topping);
this.toppings.splice(index, 1);
}
}
let pizza1 = new Pizza("Medium", "thin", true);
pizza1.addTopping("Pepperoni", "Green Peppers", "Mushrooms");
console.log(pizza1);
pizza1.addTopping
目前只会添加第一项。
使用 rest parameters to collect all addToppings()
arguments in an array, and the spread syntax 将数组转换为 Array.push()
函数的参数:
class Pizza {
constructor(size, crust, stuffedcrust) {
this.size = size;
this.crust = crust;
this.stuffedcrust = stuffedcrust;
this.toppings = ["Cheese"];
}
addToppings(...toppings) { // rest
this.toppings.push(...toppings); // spread
}
removeTopping(topping) {
let index = this.toppings.indexOf(topping);
this.toppings.splice(index, 1);
}
}
let pizza1 = new Pizza("Medium", "thin", true);
pizza1.addToppings("Pepperoni", "Green Peppers", "Mushrooms");
console.log(pizza1);
不妨看看rest parameters。我认为它会满足您的需求
您可以使用 function.arguments,但已弃用。
来源:
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments
我正在尝试构建 addTopping 方法,以便它可以接受多种浇头而不是一个浇头推入浇头数组。我不确定如何解决这个问题。我已经看到其他一些使用 .push.apply()
的帖子,这在我的案例中不起作用,因为它创建了一个对象。
class Pizza {
constructor(size, crust, stuffedcrust) {
this.size = size;
this.crust = crust;
this.stuffedcrust = stuffedcrust;
this.toppings = ["Cheese"];
}
addTopping(topping) {
this.toppings.push(topping);
}
removeTopping(topping) {
let index = this.toppings.indexOf(topping);
this.toppings.splice(index, 1);
}
}
let pizza1 = new Pizza("Medium", "thin", true);
pizza1.addTopping("Pepperoni", "Green Peppers", "Mushrooms");
console.log(pizza1);
pizza1.addTopping
目前只会添加第一项。
使用 rest parameters to collect all addToppings()
arguments in an array, and the spread syntax 将数组转换为 Array.push()
函数的参数:
class Pizza {
constructor(size, crust, stuffedcrust) {
this.size = size;
this.crust = crust;
this.stuffedcrust = stuffedcrust;
this.toppings = ["Cheese"];
}
addToppings(...toppings) { // rest
this.toppings.push(...toppings); // spread
}
removeTopping(topping) {
let index = this.toppings.indexOf(topping);
this.toppings.splice(index, 1);
}
}
let pizza1 = new Pizza("Medium", "thin", true);
pizza1.addToppings("Pepperoni", "Green Peppers", "Mushrooms");
console.log(pizza1);
不妨看看rest parameters。我认为它会满足您的需求
您可以使用 function.arguments,但已弃用。
来源: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments