I would like to know why this example shows the following behavior. If we write:
let person = {
name: 'ENoy',
age: 25,
weekendAlarm: 'No alarms needed',
weekAlarm: 'Alarm set to 7AM',
sayHello: () => {
return `Hello, my name is ${this.name}`;
},
sayGoodbye(){
return 'Goodbye!';
}
};
console.log(person.sayHello());
let friend = {
name: 'Bruno'
};
friend.sayHello = person.sayHello;
console.log(friend.sayHello());
We get as output:
Hello, my name is undefined
Hello, my name is undefined
And if we try to use:
let person = {
name: 'ENoy',
age: 25,
weekendAlarm: 'No alarms needed',
weekAlarm: 'Alarm set to 7AM',
sayHello: () => {
return `Hello, my name is ${person.name}`;
},
sayGoodbye(){
return 'Goodbye!';
}
};
console.log(person.sayHello());
let friend = {
name: 'Tori'
};
friend.sayHello = person.sayHello;
console.log(friend.sayHello());
We see:
Hello, my name is ENoy
Hello, my name is ENoy
In Java I have seen various ways to get it done:
Java - get the current class name?
In JavaScript I have seen the constructor:
But I think in the previous link we get the method which instantiated the object we would like in this topic get the variable from the object where the function is declared.