为什么我不能访问匿名函数对象?

时间:2019-03-07 17:17:40

标签: javascript

我试图理解为什么我不能访问匿名函数的对象。

一个例子:

let Run=(distance)=>{
    console.log(`Mr ${this.name} is coming to the end of a very long road, After more than ${distance}.`)
}

let Runner = {name:'Forest Gump',Run}

Runner.Run('15,000 miles')

此返回:

一个空对象:

Mr is coming to the end of a very long road, After more than 15,000 miles.

但是当我将功能更改为:

function Run(distance){

    console.log(`Mr ${this.name} run ${distance}`)}

效果很好

有人可以向我解释为什么在执行匿名函数时我们无法访问该对象吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

这是因为箭头功能没有自己的this。箭头函数中的this是基于其词法作用域(即,基于箭头函数的包围方式)而不是基于函数的调用方式来确定的。

MDN正在提供有关箭头功能的详细文档。