'this'在对象文字中的箭头函数vs非箭头函数中

问题描述:

在以下代码中,在obj1的对象字面量中,我假设这两个函数中的'this'都会引用obj1,但是在胖箭头功能,它没有。有人能解释为什么吗?我会假定这些函数要么是等价的,要么是在胖箭头函数中,'this'将在词汇上定义为obj1。'this'在对象文字中的箭头函数vs非箭头函数中

var obj1 = { 
    name : 'name1', 

    standardFunction : function() { 
    console.log(this.name);  // Refers to obj1 
    }, 

    fatArrowFunction :() => {  // Refers to the global object 
    console.log(this.name);   
    } 
} 

obj1.standardFunction(); 
obj1.fatArrowFunction(); 
+0

这个* *是*从词法上解决的。即它指的是定义了obj1的环境的'this'的值。而在那里,'this'不是指'obj1'。 –

按照定义,箭头函数的行为与传统行为不同。使用() => {}语法定义的函数会继承外部作用域的上下文。