为了账号安全,请及时绑定邮箱和手机立即绑定

this关键字问题

this关键字问题

临摹微笑 2019-03-07 17:15:12
如图,框框中的this为什么会是Person对象而不是windows呢,不是说settimeout函数的执行对象是windows,this都会指代windows,那settimeout中出现的this不应该都是windows吗?就像为什么下面这个匿名函数我绑定this,但是并没有指向person对象,还是打印的XL大写?只能通过that = this这样来转换才能改变this指向 这是为什么呢    var name="XL";    var person={        name:"xl",        showName:function(){            console.log(this.name);        },        sayName:function(){            (function(callback){                callback();            }.bind(this))(this.showName)        }    }    person.sayName(); //XL
查看完整描述

4 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

两个地方你都是把匿名函数的this绑定到了person对象上,不同的是第二个地方你是通过callback函数打印name,你并没有绑定这个函数的this所以是指向window对象的name


查看完整回答
反对 回复 2019-03-23
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

第一个setTimeout=>bind(this),这个this当前代表的就是Person这个构造函数,如果没有bind(this)那么setTimeout里面的this指向的就是window,第二个一样的情况,因为(this.showName)里面的this就是person对象


查看完整回答
反对 回复 2019-03-23
  • 4 回答
  • 0 关注
  • 388 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信