<script src=".js"></script>
object2 那里我就是觉得应该是 the window 。
object2 那里我就是觉得应该是 the window 。
1
cuiweiqiang Sep 29, 2015 via Android 这应该不是闭包的问题吧,是 this 的意义不清。一般 this 指向的是调用者,但是在匿名函数中 this 指向的是顶级对象。比如 window, node module 。
|
2
joyee Sep 29, 2015 1 楼+1 ,这不是闭包的问题, JS 的闭包里变量都属于 lexical scope 也就是符合你说的“直觉”,但 this 不是 lexical scope 的,有另一套规则。不过如果你用 ES6 的 arrow function 的话 this 就是跟着 lexical scope 走的了 XD
|
3
joyee Sep 29, 2015
@cuiweiqiang 不过说匿名函数里 this 指顶级对象也不太对……因为你可以用 bind / call / apply 弄到其他对象上去,或者把它赋值到另一个对象的属性上( obj.method = getFunc())再 obj.method() 这样 this 就变成 obj 了。只有在没有进行这种 binding 的情况下,才会默认指顶级对象。
|