Использование конструктора и класса JavaScript - PullRequest
0 голосов
/ 06 июня 2018

Я работаю над кодом со следующими инструкциями:

Создайте класс с именем ShoppingCart.

Создайте конструктор, который не имеет аргументов, устанавливает нулевой атрибут total и инициализируетпустой атрибут dict с именем items.

Создайте метод add_item, который требует аргументы item_name, количество и цена.Этот метод должен добавить стоимость добавленных предметов к текущей стоимости итога.Также следует добавить запись к элементу dict, в которой ключом является item_name, а значением - количество элемента.

Создайте метод remove_item, для которого требуются аргументы, аналогичные add_item.Следует удалить элементы, которые были добавлены в корзину и не являются обязательными.Этот метод должен вычитать стоимость этих предметов из текущего итога, а также обновлять эти элементы соответственно.Если количество удаляемых элементов превышает текущее количество в корзине, предположим, что все записи этого элемента должны быть удалены.

Создайте метод извлечения, который принимает cash_paid и возвращает значение баланса из платежа.Если cash_paid недостаточно, чтобы покрыть сумму, верните, что оплаченных денежных средств недостаточно.

Создайте класс с именем Shop, в котором есть конструктор, который инициализирует атрибут с именем количество в 100.

Убедитесь, что Shop наследуетfrom ShoppingCart.

В классе Shop переопределите метод remove_item, чтобы при вызове метода remove_item Shop без аргументов количество уменьшилось на единицу.

JavaScript Используйте верблюжий регистр для имен методов вашего класса, например,

add_item 

становится

addItem 

Единственная проблема заключается в том, что мой код, показанный ниже, не работает:

function ShoppingCart(){
  this.total = 0;
  this.items = {};
  this.addItem = function(itemName, quantity, price){
    this.total = this.total + price;
    this.items[itemName] = quantity;
    //console.log(this.items);
  }
  this.removeItem = function(itemName, quantity, price){
    delete this.items['Mango'];
    // this.total = this.total - price;
    if (quantity > Object.keys(this.items).length){
      this.items = {};
    }
    //console.log(price);
    //console.log(this.total);
  }
  this.checkout = function(cashPaid){
    if (cashPaid >= this.total){
      return cashPaid - this.total;
    }
    return 'Cash paid not enough';
  }
}

class Shop extends ShoppingCart {
  constructor(quantity){
    super(quantity);
    this.quantity = 100;
  }
  removeItem(){
    this.quantity--;
  }
}

Можете ли вы помочьнаписать код, который удовлетворяет всем условиям?

Я почти уверен, что мой код беспорядок, так как я новичок в ООП в JS.Заранее спасибо.

1 Ответ

0 голосов
/ 06 июня 2018

Вы должны также преобразовать ShoppingCart в класс, после этого он работает:

class ShoppingCart {
  constructor() {
    this.total = 0;
    this.items = {};
  }
  addItem(itemName, quantity, price){
    this.total = this.total + price;
    this.items[itemName] = quantity;
    //console.log(this.items);
  }
  removeItem(itemName, quantity, price){
    delete this.items['Mango'];
    // this.total = this.total - price;
    if (quantity > Object.keys(this.items).length){
      this.items = {};
    }
    //console.log(price);
    //console.log(this.total);
  }
  checkout(cashPaid){
    if (cashPaid >= this.total){
      return cashPaid - this.total;
    }
    return 'Cash paid not enough';
  }
}

class Shop extends ShoppingCart {
  constructor(quantity){
    super(quantity);
    this.quantity = 100;
  }
  removeItem(){
    this.quantity--;
  }
}

console.log(new Shop().removeItem)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...