请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,这个面试题答案是什么

const obj = {
 x:1,
 print1:()=>{
  console.log(this.x)
 },
 print2(){
  console.log(this.x)
 },
 print3:function(){
  console.log(this.x)
 }.bind(this)
}

obj.print1()
obj.print2()
obj.print3()
想知道this分别指向什么,为什么

正在回答 回答被采纳积分+3

1回答

双越 2021-10-28 15:33:30

print1 使用的是箭头函数,this 会指向函数定义时作用域,即 window

print2 很好理解

print3 的 bind(this) ,this 此时指向的也是函数定义时的作用域,即 window


可以换一种写法,你就能明白了。

const t = this

const obj = {
 x:1,
 print1:()=>{
  console.log(t.x)
 },
 print2(){
  console.log(this.x)
 },
 print3:function(){
  console.log(this.x)
 }.bind(t)
}


1 回复 有任何疑惑可以回复我~
  • 提问者 慕头不大 #1
    谢谢,看明白了
    回复 有任何疑惑可以回复我~ 2021-10-28 17:46:45
  • 老师想问下,print3中的bind(this),这个this为什么是window呀?不太理解
    回复 有任何疑惑可以回复我~ 2022-02-10 15:57:14
  • 双越 回复 Evonne_xy #3
    因为在执行 bind(this) 时,此时 this 就是 window
    回复 有任何疑惑可以回复我~ 2022-02-10 21:46:18
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信