1
xcssum 2017-05-03 12:16:30 +08:00
推荐 你不知道的 js 关于 this 的讲得很详细
|
2
IanPeverell 2017-05-03 12:17:07 +08:00 1
js 不是很懂,不过 markdown 这个锅你自己背,代码块不是用 ''' 而是用 ``` 不需要解释,而且 V2EX 有预览功能你自己可以先看一下效果再发出来
|
3
bumz 2017-05-03 12:24:17 +08:00
JS 中的 this 是运行时根据调用函数的(忘记名字了)确定的,例如 A.click() 中 click 是通过 A.click 调用的,所以 click 中 this 是 A
但如果 var click; (click = A.click)(),此时函数执行前 A.click 已被求值,A 就丢失了,于是 click 中 this 就指向 windows (严格模式为 undefined) function evoke(fn) {fn()} evoke(A.click) 同理,此时 click 已经脱离的 A,this 指向 windows/undefined |
4
bumz 2017-05-03 12:25:51 +08:00
evoke(A.click.bind(A)) 把 click 的 this 绑定到 A 即可解决这个问题。
|
5
SuperMild 2017-05-03 12:31:44 +08:00
看《你不知道的 js 》就可以了
|
7
wobuhuicode 2017-05-03 13:31:38 +08:00 via iPhone
谁调用指向谁
|
8
yoa1q7y 2017-05-03 13:37:08 +08:00
这样理解一下
可以把函数想象成一个工具,比如一把剪刀 如果没人使用它 它就是一个独立存在的东西,此时的 this 就是 undefined (或 window ) 张三用这把剪刀,那 this 就指向张三 很简单 |