module.exports = function Cart(oldCart) {
this.items = oldCart.items || {};
this.totalQty = oldCart.totalQty || 0;
this.totalPrice = oldCart.totalPrice || 0;
this.add = function(item, id, image) {
let storedItem = this.items[id];
if(!storedItem) {
storedItem = this.items[id] = { item: item, image: image, qty: 0, price: 0, id: id};
}
storedItem.qty++;
storedItem.price = storedItem.item.price * storedItem.qty;
this.totalQty++;
this.totalPrice += storedItem.item.price;
};
this.reduceByOne = function(id) {
this.items[id].qty--;
this.items[id].price -= this.items[id].item.price;
this.totalQty--;
this.totalPrice -= this.items[id].item.price;
// minimum number 0
};
this.addByOne = function(id) {
this.items[id].qty++;
this.items[id].price += this.items[id].item.price;
this.totalQty++;
this.totalPrice += this.items[id].item.price;
};
this.removeItem = function(id) {
this.totalQty -= this.items[id].qty;
this.totalPrice -= this.items[id].item.price;
delete this.items[id];
};
this.generateArray = function() {
var arr = [];
for (var id in this.items) {
arr.push(this.items[id]);
}
return arr;
};
}
Мне было интересно, что может быть приемлемым способом заставить функцию reduByOne иметь минимальное число 0 (не -1, -2 и т. Д., Что происходит сейчас),Поэтому он должен прекратить вычитать, когда достигнет числа 0. Но имейте в виду, что эта функция не должна влиять и на другие функции.Я уже написал условие внутри this.reduceByOne function
, и теперь единственное, что нужно сделать, это проверить, имеет ли this.items [id] .qty номер 0.