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面
添加回答
举报
0/150
提交
取消
