Javascript JS在构造函数中累加数字
我遇到了一个问题。为了简单起见,我将把这个问题格式化为一个学校作业,但我的问题源于访问API数据,当我创建一个新的constructor函数时,它会记录以这种方式创建的所有项目的总价。例如:Javascript JS在构造函数中累加数字,javascript,constructor,Javascript,Constructor,我遇到了一个问题。为了简单起见,我将把这个问题格式化为一个学校作业,但我的问题源于访问API数据,当我创建一个新的constructor函数时,它会记录以这种方式创建的所有项目的总价。例如: function Item(name, price, orderID) { var totalPrice; this.name = name; this.price = price; this.orderID = orderID; // This is where
function Item(name, price, orderID) {
var totalPrice;
this.name = name;
this.price = price;
this.orderID = orderID;
// This is where the addToTotalPrice function should do something
function addToTotalPrice() {
totalPrice += price;
}();
}
但我无法在构造函数中运行这样的函数,即使是在这样一个简单的情况下。我怎样才能确保这是有效的
谢谢
--愚蠢的小马!:有两个问题:
1:您没有正确调用函数
2:totalPrice未定义
将代码更新为:
let totalPrice = 0;
(function(){
totalPrice += price;
})();
编辑:谢谢@jonas。用于指出第二点。这可能适合你。如果我误解了你的回答
函数项(){};
项目总价=0;
Item.create=函数(名称、价格、订单ID){
this.name=名称;
这个价格=价格;
this.orderID=orderID;
项目.总价+=此价格;
}
console.log(Item.totalPrice);
var item1=Item.create(“笔”,10123);
var item2=Item.create(“纸张”,10124);
console.log(Item.totalPrice)代码>totalPrice
未定义。如果price
是一个数值,那么之后totalPrice
将是NaN
。我猜您的“简化”将代码转换为“胡说八道”,您既没有调用函数,也没有将其分配给实例,也没有返回值。如果您想对所有项目价格求和,那么编写一个函数来循环arra中的项目并对其价格求和可能会更容易<代码>(项目)=>项目.减少((prc,itm)=>prc+itm.价格,0)
。只需向其传递一个项目数组。他是。2) “不,不是。”乔纳斯说。我很抱歉。你是对的。我指的是总价。更新了答案。