使用Javascript创建新对象以重用代码

达斯1

我正在尝试重用对象“技巧”,以下是用于创建对象的代码

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

如何重新初始化对象并获得预期的输出?

妮娜·斯科茨(Nina Scholz)

为什么不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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章