You deserve it! Help! do I deserve it?


#1

https://www.codecademy.com/en/courses/close-the-super-makert/0/7?curriculum_id=506324b3a7dffd00020bf661

Hi all I'd really appreciate any help anyone can provide, the exercise completes when I run this code but the console logs this error: ReferenceError: applyStaffDiscount is not defined.

I've stared at this for so long I've completely lost all objectivity, can anyone see and please explain where I've gone wrong I'd really like to genuinely complete this not get through because of a bug. Thanks.


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 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)
    {
        return cashRegister.total - (total/staffMember.discountPercent)
    }, 
};

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

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


#2

do you see this comment:

// Create yourself again as 'me' with a staff discount of 20%

but you never create an instance of staff member called me, you did create sally and bob, but you didn't create me


#3

Hi,
Thanks for your reply completely didn't see that, I've created a me staff member now, unfortunately the code still brings up the ReferenceError: applyStaffDiscount is not defined. I can't figure out what's wrong with the method though.

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("Akin",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)
    {
        return cashRegister.total - (total/staffMember.discountPercent)
    }, 
};

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

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

#4

look at how you call the applyStaffDiscount method:

applyStaffDiscount(me)

applyStaffDiscount is a method, it is part of the object. As you know, to call a method we need the following syntax:

object.method(arguments)

you use the right syntax when calling the scan method:

cashRegister.scan('eggs',1);

but not when calling the applyStaffDiscount method


#6

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.