我正在尝试重用对象“技巧”,以下是用于创建对象的代码
class tipArray extends Array{
sum() {
return this.reduce((sum,current) => sum + current)
}
}
var tips = {
bills: new tipArray(),
newTip: function(){
bills: new tipArray();
},
addTip: function(val){
this.bills.push(val)
},
getTip: function(bills) {
for(i = 0;i <= this.bills.length - 1; i++) {
if(this.bills[i]<50){
this.tipval= this.bills[i] * 0.2
console.log(this.tipval)
}
else if(this.bills[i]>= 50 && this.bills[i] < 200){
this.tipval = this.bills[i] * 0.15
console.log(this.tipval)
}
else if(this.bills[i]>= 200){
this.tipval= this.bills[i] * 0.1
console.log(this.tipval)
}
}
},
getAvg: function(){
this.avgVal = this.bills.sum()/(this.bills.length);
return this.avgVal;
},
getSum: function() {
return this.bills.sum();
}
}
然后我运行以下代码来查找输出
var fam1 = tips;
fam1.addTip(10);
fam1.addTip(50);
fam1.getTip();
output = 2, 4
当我尝试创建一个新对象时
var fam2 = tips;
fam2.addTip(30);
fam2.addTip(80);
fam2.getTip();
expected output = 6, 12
output = 2,4,6,12
如何重新初始化对象并获得预期的输出?
为什么不getTip
使用早期返回范例来上课又简短一点。
class tipArray extends Array{
sum() { return this.reduce((sum,current) => sum + current); }
}
class Tips {
constructor () {
this.bills = new tipArray();
}
newTip() {
this.bills = new tipArray();
}
addTip(val) {
this.bills.push(val);
}
getTip() {
return this.bills.map(val => {
if (val < 50) {
return val * 0.2;
}
if (val < 200) {
return val * 0.15;
}
return val * 0.1;
});
}
getAvg () {
this.avgVal = this.bills.sum() / this.bills.length;
return this.avgVal;
}
getSum () {
return this.bills.sum();
}
}
var fam1 = new Tips;
fam1.addTip(10);
fam1.addTip(50);
console.log(fam1.getTip());
var fam2 = new Tips;
fam2.addTip(30);
fam2.addTip(80);
console.log(fam2.getTip());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句