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

js 中this调用的丢失,方法名调用和方法名()调用有什么区别

js 中this调用的丢失,方法名调用和方法名()调用有什么区别

www说 2019-03-06 18:17:23
var obj = {  id: 'awesome',  cool: function coolFn() {    var _scope = this;    console.log(_scope.id);  }}var id = 'not awesome';obj.cool(); **// 为什么下面这两段调用的结果不一样, this 的指向问题**// 为什么obj.cool,和obj.cool()有什么不同,结果也是不一样的setTimeout(obj.cool,100) // not awesomesetTimeout(obj.cool(),100) // awesome 
查看完整描述

2 回答

?
慕婉清6462132

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

这个是this的隐式绑定和隐式丢失问题。
一般地,被直接对象所包含的函数调用时,也称为方法调用,this隐式绑定到该直接对象;
隐式丢失是指被隐式绑定的函数丢失绑定对象,从而默认绑定到全局对象或者undefined上。
你这是因为参数传递导致了隐式赋值。
可以看看这个文章传送门和小黄书上册85面

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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号