下面是使用显示模块模式构建的示例购物车javascript对象。
var shoppingCart = function() {
var obj = {}, items = [];
obj.AddItem = function (itemNo, quantity, price) {
var item = {};
item.itemNo = itemNo;
item.quantity = quantity;
item.price = price;
items.push(item)
};
obj.GetAllItems = function() {
return items;
};
obj.GetItemByNo = function (item) {
for (var i = 0; i < items.length; i++) {
if (items[i].itemNo === item)
return item[i];
}
return null;
};
obj.CalculateTotal = function() {
var total = 0;
for (var i = 0; i < items.length; i++) {
total = total + (items[i].quantity * items[i].price);
}
return total;
};
return obj;
};
var cart = new shoppingCart();
使用AddItem方法添加项目,包括在UI中有用的其他属性。
shoppingcart.AddItem(2,4,2.4);
获取的项目列表中的购物车
var items = shoppingcart.GetAllItems();
在计算项目的总价格在购物车
var total = shoppingcart.CalculateTotal();
请注意,我已经输入在这里的代码,所以可能包含错字,也建议在添加项目之前将数据类型验证作为数字进行价格和数量验证。
令人印象深刻的感谢。我认为我在学习Javascript时混淆不清,我只是使用了我第一次遇到的第一个问题,而不是首先想到伪问题。我想扩大这个以包含折扣金额(例如5+ 5%折扣等),如果我的想法是正确的,我将创建一个新的功能,在'AddItem'被调用之前处理这个。 – 2013-03-04 20:37:30
这取决于需求,如果可以将折扣应用于单个项目,则可以为项目对象添加另一个属性“折扣”。因此,考虑总价格的数量*(价格 - (%折扣*价格))。如果您希望将折扣应用于totalAmount,请考虑使用其他Method折扣率作为输入并应用于TotalAmount。 – Sunny 2013-03-04 20:45:44
我偏好通过将折扣%存储在单独的属性中而不是在添加项目之前将其应用于价格来实时计算价格。 – Sunny 2013-03-04 20:53:26