js this 指向该如何理解?
function fun() {
return () => {
return () => {
return () => {
console.log(this.name)
}
}
}
}
var f = fun.call({ name: 'foo' })
var t1 = f.call({ name: 'bar' })()()
var t2 = f().call({ name: 'baz' })()
var t3 = f()().call({ name: 'qux' })
是否可以理解为在执行var f = fun.call({ name: 'foo' })
的时候,就已经是绑定了 { name: 'foo' },此后不会再改变
回复
1个回答
test
2024-07-10
fun()
内部的调用都是箭头函数,箭头函数没有自己的 this 上下文,所用的都是 fun
的 this 上下文。fun
的 this 由其调用决定:
fun.call(fun.call({ name: 'foo' })
给了 fun
一个 this
是 { name: "foo" }
,而且它并不是调用完就丢了,是存到了 f
里。不过 f
是一个箭头函数,用的 fun
调用时确定的 this
,即 { name: "foo" }
。
剩下的都是基于 f
的箭头函数调用,都是同一个 this
,即 { name: "foo" }
。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容