You Deserved It!


#1

function StaffMember(name,discountPercent){
this.name = name;
this.discountPercent = discountPercent;
}

var sally = new StaffMember("Sally",5);
var bob = new StaffMember("Bob",10);

// Create yourself again as 'me' with a staff discount of 20%
var me = new StaffMember("Mustafa",20);

var cashRegister = {
total:0,
lastTransactionAmount:0
},
add: function(itemCost){
this.total += (itemCost || 0);
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;
},
voidLastTransaction:function(){
this.total -= this.lastTransactionAmount;
this.lastTransactionAmount = 0;
},
// Create a new method applyStaffDiscount here
applyStaffDiscount: function(employee){
this.total -= this.total * (1-employee.discountPercent/100);
}

};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',3);
// Apply your staff discount by passing the 'me' object
// to applyStaffDiscount

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

keeps sying
SyntaxError: Unexpected token :
please help


#2

Underneath lastTransactionAmount:0, the } curly brace closes your cashRegister object.


#3

didnt work please help
var cashRegister = {
total:0,
lastTransactionAmount:0
},


#4

Did you remove the } on this line of code?


#5

remove the { (curly braces) just like biff75 said, and put a comma (,) to separate the next property.


#6

Modify this line : this.total -= this.total * (employee.discountPercent/100);

No need of the 1-


#7

@biff75 this is how your cashRegister object should look at the end.

You were adding a curly bracket { after lastTransactionAmount and before add: function(itemCost){ that should not be there.

var cashRegister = {
total:0,
lastTransactionAmount: 0,
// error was on this line
add: function(itemCost){
this.total += (itemCost || 0);
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;
},
voidLastTransaction: function(){
this.total -= this.lastTransactionAmount;
this.lastTransactionAmount = 0;
},
// Create a new method applyStaffDiscount here
applyStaffDiscount: function(employee) {
this.total -= this.total * (employee.discountPercent / 100);
}
};


#8

Can anybody answer me why we need an employee parameter in the applyStaffDscount method? Can we do it without the employee parameter and why can’t call StaffMember.Discount in the apply StaffDiscount method. Sorry the errors are not the best explanation in code.


#9

basically whats the purpose of the employee paramter and its use inside the applyStaffDiscount?


#10

but can’t why can’t i get rid of the parameter and then inside use this.discountPercent?


#11

function StaffMember(name,discountPercent){
this.name = name;
this.discountPercent = discountPercent;
}

var sally = new StaffMember(“Sally”,5);
var bob = new StaffMember(“Bob”,10);

// Create yourself again as ‘me’ with a staff discount of 20%
var me = new StaffMember(“David”, 20);

var cashRegister = {
total:0,
lastTransactionAmount: 0,
add: function(itemCost){
this.total += (itemCost || 0);
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;
},
voidLastTransaction : function(){
this.total -= this.lastTransactionAmount;
this.lastTransactionAmount = 0;
},
// Create a new method applyStaffDiscount here
applyStaffDiscount: function(employee) {
this.total -= ((employee.discountPercent / 100) * this.total);
}
};

cashRegister.scan(‘eggs’,1);
cashRegister.scan(‘milk’,1);
cashRegister.scan(‘magazine’,3);
// Apply your staff discount by passing the ‘me’ object
// to applyStaffDiscount
cashRegister.applyStaffDiscount(me);

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

Note: This should give you the correct answer! :slight_smile: