добавить добавленный объект в новый массив при вызове getItems () - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь отобразить (записать) элементы, которые я добавил, используя функцию addItems (), когда я вызываю (записываю) функцию getItems () .. console.log (cart.addItem ("ITEMMSSS", 100, 10)) << выдает ShoppingCart {itemName: 'ITEMMSSS', количество: 100, цена: 10} <br>, как и ожидалось, но console.log (cart.getItems ()) выдает -1-

когда я console.log (this.addedItems) выходит из системы -undefined- (дважды)

Я не понимаю, почему у меня нет доступа к возвращенному значению из функции addItem ().

 class ShoppingCart {

      constructor(itemName, quantity, price) {

        this.itemName = itemName
        this.quantity = quantity
        this.price = price
      }

      addItem(...items) {


        const addedItems = new ShoppingCart(...items)


        return addedItems

      }

    getItems(addedItems) {
            const el = []
        const selected = this.addedItems
         const newArr = el.push(selected)
        return newArr
          }
          clear(...item) {
            // return items.slice(0, ...items).concat(items.slice(...items + 1))
          }

      clone(...items) {

        // console.log(this)

        //  copiedCart.map((item) => {
        // return item
        // })

      }

    }

Исправлена ​​проблема,

class ShoppingCart {

  constructor(items) {

    this.items = []

  }

  addItem(name, quantity, pricePerUnit) {
    const shopCart = this.items.push({
      name: name,
      quantity: quantity,
      pricePerUnit: pricePerUnit
    })

    return shopCart
  }

  getItems(...items) {
    const displayItems = this.items
    return displayItems

  }

  clear(...items) {
    const emptyCart = this.items.length = []
    return emptyCart
  }

  clone(...items) {
    const copyCart = new ShoppingCart()
    copyCart.items = JSON.parse(JSON.stringify(this.items))
    return copyCart

  }


}


//
// const cart1 = new ShoppingCart('banana', 12, 23)
// const cart2 = cart1.clone()
// //
// console.log(cart2)
// //



module.exports = ShoppingCart;

Но не получается получить неизменную копию shoppingCart <- исправлена ​​проблема после прочтения о глубоком копировании </p>

 clone(...items) {
        const copyCart = new ShoppingCart()
        copyCart.items = JSON.parse(JSON.stringify(this.items))
        return copyCart

      }

1 Ответ

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

Пара идей для размышления автора:

1) addItem должен быть функцией существующего экземпляра ShopppingCart.Создание нового объекта внутри addItems не должно быть необходимым.Я знаю только о возврате значения из установщика, который обычно делается только для «беглых» практик сеттеров, чтобы вы могли связать их вместе.Но это будет возвращение текущего объекта.2) getItems обычно не должен выполнять какую-либо логику.Обычно методы получения возвращают текущее состояние члена переменной / объекта.

Чтобы ответить на прямой вопрос авторов: вы возвращаете объект addItems из функции, но не сохраняете его.Попробуйте:

cart = cart.addItem("ITEMMSSS", 100, 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...