5. Bleep Bleep


#1

I keep getting this error message: Can't find variable lastTransactionAmount. Any clue what I am doing wrong? Also, why do I need to use this.lastTransactionAmount as opposed to it without the "this"? What does the "this" do?

var cashRegister = {
total:0,
//Dont forget to add your property
lastTransactionAmount: 0,
add: function(itemCost) {
this.total += itemCost;
this.lastTransactionAmount: itemCost;
},
scan: function(item,quantity) {
switch (item) {
case "eggs": this.add(0.98 * quantity); break;
case "milk": this.add(1.23 * quantity); break;
case "magazine": this.add(4.99 * quantity); break;
case "chocolate": this.add(0.45 * quantity); break;
}
return true;
},
//Add the voidLastTransaction Method here
voidLastTransaction: function() {
this.total -= lastTransactionAmount;
}
};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',1);
cashRegister.scan('chocolate',4);

//Void the last transaction and then add 3 instead
cashRegister.voidLastTransaction();
cashRegister.scan("chocolate", 3);

//Show the total bill
console.log('Your bill is '+cashRegister.total);

Thanks!


#2

@datarunner73465
You need a "=" sign instead of ":" inside the function on line 7.

You need "this." because otherwise the voidLastTransaction does not understand where it should find the variable lastTransactionAmount. In other words, using "this." you tell the function to take the public variable of the object, otherwise the function does not understand and demands you to declare that variable in a place where it can find it.

Additionally, here is my solution to this exercise. Hope it helps. Enjoy)))

var cashRegister = {
    total:0,
    //Dont forget to add your property
    lastTransactionAmount:0,
    add: function(itemCost) {
        this.lastTransactionAmount = itemCost;
        this.total +=  itemCost;
    },
    scan: function(item,quantity) {
        switch (item) {
        case "eggs": this.add(0.98 * quantity); break;
        case "milk": this.add(1.23 * quantity); break;
        case "magazine": this.add(4.99 * quantity); break;
        case "chocolate": this.add(0.45 * quantity); break;
        }
        return true;
    },
    //Add the voidLastTransaction Method here
    voidLastTransaction: function(){
        this.total -= this.lastTransactionAmount;
    },
    
};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',1);
cashRegister.scan('chocolate',4);

//Void the last transaction and then add 3 instead
cashRegister.voidLastTransaction();
cashRegister.scan('chocolate',3);

//Show the total bill
console.log('Your bill is '+cashRegister.total);