Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我不能访问匿名函数对象吗?_Javascript - Fatal编程技术网

Javascript 为什么可以';我不能访问匿名函数对象吗?

Javascript 为什么可以';我不能访问匿名函数对象吗?,javascript,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在行驶了15000多英

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

例如:

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在行驶了15000多英里后,即将走到一条很长的路的尽头。

但当我将函数更改为:

function Run(distance){

    console.log(`Mr ${this.name} run ${distance}`)}
它工作得很好

有人能解释一下为什么在执行匿名功能时我们不能访问对象吗


谢谢。

这是因为箭头函数没有自己的
在arrow函数中是基于它的词法范围(即,基于arrow函数的封闭方式)而不是基于函数的调用方式来决定的


有关于箭头函数此功能的详细文档。

第一个函数中的this关键字未绑定到任何上下文。根据定义,箭头函数没有自己的箭头。你需要把它绑起来。您试图做的是向对象附加一个箭头函数。this关键字没有指向的外部上下文。所以它需要被包装在一个普通函数中。这是因为
这个
在ES6 arrow函数中意味着一些不同的东西。基本上将
let Run=(距离)=>{
替换为
let Run=函数(距离){