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.
 
    