我按照以下说明处理代码:
创建一个名为ShoppingCart的类。
创建一个没有参数的构造函数,并将total属性设置为零,并初始化一个名为items的空dict属性。
创建一个需要item_name,quantity和price参数的方法add_item。此方法应将添加项的成本添加到当前总计的值。它还应该在项目dict中添加一个条目,使得键是item_name,值是项目的数量。
创建一个方法remove_item,它需要与add_item类似的参数。它应该删除已添加到购物车中但不是必需的项目。此方法应从当前总计中扣除这些项目的成本,并相应地更新项目dict。如果要删除的商品数量超过购物车中的当前数量,则假定要删除该商品的所有商品。
创建一个方法结帐,其中包含cash_paid并从付款中返回余额值。如果cash_paid不足以支付总额,则返还现金支付不足。
创建一个名为Shop的类,该类具有一个构造函数,该构造函数初始化一个名为quantity的属性为100。
确保Shop继承自ShoppingCart。
在Shop类中,覆盖remove_item方法,这样调用Shop的remove_item,不带参数会减少数量。
的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中对OOP不熟悉。提前谢谢。
答案 0 :(得分:2)
你应该将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)