Javascript 按特定属性返回NaN计算对象数组的总和

Javascript 按特定属性返回NaN计算对象数组的总和,javascript,oop,ecmascript-6,Javascript,Oop,Ecmascript 6,汉堡包由一种或多种填料(不少于一种)补充。 但是,当我使用…填充时结果是未定义 请帮助我如何更正此任务,以便计算所有配料的成本 功能汉堡(尺寸,…填料){ 这个。大小=大小; 这个。填充=填充; this.topping=[]; } 汉堡。小={ 名称:'小', 价格:10,, 千卡:200 } 汉堡、奶酪={ 名字:“奶酪”, 价格:4, 千卡:10 } 汉堡包{ 姓名:'见面', 价格:40, 千卡:103 } Hamburger.prototype.calculatePrice=()=>

汉堡包由一种或多种
填料(不少于一种)补充。
但是,当我使用
…填充时
结果是
未定义

请帮助我如何更正此任务,以便计算所有配料的成本

功能汉堡(尺寸,…填料){
这个。大小=大小;
这个。填充=填充;
this.topping=[];
}
汉堡。小={
名称:'小',
价格:10,,
千卡:200
}
汉堡、奶酪={
名字:“奶酪”,
价格:4,
千卡:10
}
汉堡包{
姓名:'见面',
价格:40,
千卡:103
}
Hamburger.prototype.calculatePrice=()=>{
让allCost=humb1.size.price+humb1.ficking.price;
return`汉堡总价格:${allCost}`
}
let humb1=新汉堡(Hamburger.small,Hamburger.cheese,Hamburger.meet);
log(humb1.calculatePrice())
  • 你不能像以前那样使用arrow函数,你需要使用好的
    函数
    声明(或者也可以使用es6语法糖)。看一看以了解原因(在您的情况下,您得到的不是
    汉堡
    对象,而是全局
    窗口
    对象)
  • 不要在实现
    calculatePrice
    时使用
    humb1
    ,该函数是类原型的一部分,而
    humb1
    是类实例

  • 填充
    是一个数组。您需要对每个项目进行操作,以获得总成本。我在这里用过
功能汉堡(尺寸,…填料){
这个。大小=大小;
这个。填充=填充;
this.topping=[];
}
汉堡。小={
名称:'小',
价格:10,,
千卡:200
}
汉堡、奶酪={
名字:“奶酪”,
价格:4,
千卡:10
}
汉堡包{
姓名:'见面',
价格:40,
千卡:103
}
Hamburger.prototype.calculatePrice=函数(){
让totalCost=this.size.price+this.ficking.reduce((a,c)=>a+c.price,0);
返回`汉堡总价格:${totalCost}`;
}
let humb1=新汉堡(Hamburger.small,Hamburger.cheese,Hamburger.meet);

log(humb1.calculatePrice())
填充
是一个数组。它没有
.price
属性。如果你想知道所有原料的成本,你就必须把它们加起来。使用循环或
.reduce()