关于js回调函数this绑定的问题

qq_28938099 2015-09-14 10:48:35
Function.bind
有了前面对于函数执行环境的描述,我们来看看 this 在 JavaScript 中经常被误用的一种情况:回调函数。JavaScript 支持函数式编程,函数属于一级对象,可以作为参数被传递。请看下面的例子 myObject.handler 作为回调函数,会在 onclick 事件被触发时调用,但此时,该函数已经在另外一个执行环境(ExecutionContext)中执行了,this 自然也不会绑定到 myObject 对象上。
清单 8. callback.js
button.onclick = myObject.handler;

这里的“在另外一个执行环境中执行了”这句话不理解,请问执行环境是如何跳转的???
...全文
251 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28938099 2015-09-15
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
申明一个匿名函数作为onclick的处理时间,然后调用myObject.handler()方法,因为是通过myObject调用的,所以this指向myObject
谢谢
Go 旅城通票 2015-09-14
  • 打赏
  • 举报
回复
申明一个匿名函数作为onclick的处理时间,然后调用myObject.handler()方法,因为是通过myObject调用的,所以this指向myObject
qq_28938099 2015-09-14
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
button.onclick = myObject.handler;这样赋值时将hanlder提取出来,此时this指向button,因为主调对象是button了。而不是myObject 可以改下面这样 button.onclick =function(){ myObject.handler();}
老大,下面这种形式再帮忙解释解释,先在这里叩谢了
Go 旅城通票 2015-09-14
  • 打赏
  • 举报
回复
button.onclick = myObject.handler;这样赋值时将hanlder提取出来,此时this指向button,因为主调对象是button了。而不是myObject 可以改下面这样 button.onclick =function(){ myObject.handler();}

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧