js里面的this指向问题,问什么第二个this指向的是window?

functiontemp1(){console.log(this);functiontemp2(){console.log(this);}temp2();}varObj=... function temp1() {
console.log(this);
function temp2() {
console.log(this);
}
temp2();
}
var Obj = {};
temp1.call(Obj);
展开
 我来答
maml163
2014-12-08 · 超过22用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:38.9万
展开全部
this的定义:是包含它的函数作为方法被调用时所属的对象。仔细理解一下。
来解释代码:第一个this包含在temp1中,那么调用temp1方法的对象是Obj,因为是temp1.call(Obj);,所以第一个this是Obj。
第二个this包含在temp2中,那么调用temp2的是哪个对象呢?temp2();
直接就这样执行了,默认就是window对象,所以temp2中的this就是window对象
追问
还是没懂,能否详细讲解下?用作用域链啥的解释下?
追答
作用域链解释起来更多了,还是说this吧,
this的定义:是包含它的函数被调用时所属的对象。这句话好好理解一下,多好的解释啊。
首先看this 在所在函数,然后看这个函数执行的时候,是哪个对象调用的。一个函数执行的时候肯定有个对象来调用这个函数。this就是这个对象。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式