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=函数(距离){