将多个项目推入 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