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