从JavaScript中声明方法的对象访问键

时间:2018-03-15 15:28:19

标签: javascript function this

我想知道为什么这个例子显示了以下行为。如果我们写:

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());

我们得到输出:

Hello, my name is undefined
Hello, my name is undefined

如果我们尝试使用:

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());

我们看到:

Hello, my name is ENoy
Hello, my name is ENoy

在Java中,我已经看到了各种方法来完成它:

Java - get the current class name?

在JavaScript中,我看到了构造函数:

Get name of object or class

但我认为在上一个链接中我们得到了一个方法,它实例化了我们在本主题中想要的对象,从声明函数的对象中获取变量。

0 个答案:

没有答案