看了tom大叔的深入浅出JavaScript,其中有一段关于this的有点搞不懂,他这样说:“当调用表达式限定了call括号左边的引用类型的值, 尽管this被设定为null,但结果被隐式转化成global。当引用类型值的base对象是被活动对象时,这种情况就会出现。” 然后给了下面这段例子: function foo() { console.log(this);//goo
function bar() { console.log(this); // global
}
bar(); // the same as AO.bar()
} var goo = { go:foo
}
goo.go();根据我看了的理解在进入函数上下文时,这对象里面会有三个属性:1、变量对象(vo) 2、作用域链 3、this值,现在要说的就是this的值,里面说函数的this值是有调用者call给的,所以第一个log出goo没错,但在foo里面调用bar函数时为什么会是global,按照理解在执行bar()时会进入bar的上下文,而他的this值应该是调用者给的,而调用者foo的this值是goo,那为什么第二个log出来global。。。谁能解释一下这其中运作的过程!
添加回答
举报
0/150
提交
取消