'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();
答
按照定义,箭头函数的行为与传统行为不同。使用() => {}
语法定义的函数会继承外部作用域的上下文。
这个* *是*从词法上解决的。即它指的是定义了obj1的环境的'this'的值。而在那里,'this'不是指'obj1'。 –