在调用getItems()

时间:2018-06-09 12:08:23

标签: javascript oop

当我调用(log)getItems()函数时,我试图使用addItems()函数显示(log)我添加的项目。  console.log(cart.addItem(" ITEMMSSS",100,10))<<推出 ShoppingCart {itemName:' ITEMMSSS',数量:100,价格:10}
正如所料 但是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< - 的不可变副本 阅读深度复制后修复问题

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

      }

1 个答案:

答案 0 :(得分:0)

结合思想让作者思考:

1)addItem应该是ShopppingCart现有实例的一个功能。不必在addItems中创建新对象。我只知道从一个setter返回一个值,通常只为“流畅的”setter实践做,这样你就可以将它们链接在一起。但那会返回当前的对象。 2)getItems通常不应该执行任何逻辑。通常getter返回变量/对象成员的当前状态。

解决作者的直接问题: 您正在从函数返回addItems对象,但不存储它。 尝试:

cart = cart.addItem("ITEMMSSS", 100, 10)