使用箭头功能后仍然指窗口对象吗?

时间:2019-02-19 05:42:22

标签: javascript

它应该引用父对象,因为它不依赖于调用// context并具有词法作用域(我正在使用greeting();,正在使用窗口)。

下面是示例

    var Person = {
      name: "Tim",
      age: 28,
      greeting:()=>{
        console.log("Hello " + this.name + ".  Wow, you are " + this.age + " years old.");
    }
    }
    Person.greeting()
    var greeting = Person.greeting;
    greeting(); 
    <!DOCTYPE html>
    <html>
    <>
    
    <h1>Hello World!</h1>
    

1 个答案:

答案 0 :(得分:0)

Arrow functions没有自己的this

  

箭头函数表达式在语法上是常规函数表达式的紧凑选择,尽管没有自己与thisargumentssupernew.target关键字的绑定

您可以使用常规函数语法bind()

var Person = {
  name: "Tim",
  age: 28,
  greeting:function(){
    console.log("Hello " + this.name + ".  Wow, you are " + this.age + " years old.");
  }
}
Person.greeting()
var greeting = Person.greeting.bind(Person);
greeting();