当我调用(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
}
答案 0 :(得分:0)
结合思想让作者思考:
1)addItem应该是ShopppingCart现有实例的一个功能。不必在addItems中创建新对象。我只知道从一个setter返回一个值,通常只为“流畅的”setter实践做,这样你就可以将它们链接在一起。但那会返回当前的对象。 2)getItems通常不应该执行任何逻辑。通常getter返回变量/对象成员的当前状态。
解决作者的直接问题: 您正在从函数返回addItems对象,但不存储它。 尝试:
cart = cart.addItem("ITEMMSSS", 100, 10)