关于 bind 和 call 的疑问

2017-01-09 17:59:26 +08:00
 wangjialin

func.bind(a).call(b) 问题出在哪儿 是因为 bind 不立即执行么 求指教

截图在这 http://7xsw2u.com1.z0.glb.clouddn.com/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202017-01-09%20%E4%B8%8B%E5%8D%885.50.54.png

2314 次点击
所在节点    JavaScript
14 条回复
zhaixiaohu
2017-01-09 18:44:39 +08:00
五迷?
fds
2017-01-09 18:50:44 +08:00
截图里 a 已经是结果了呀,你还 call 啥?另外你这么用 bind 根本无效呀,何必呢……
cbais7890
2017-01-09 18:51:14 +08:00
bind 传一个 context 进去, 返回一个改变了 context 的新函数
call/apply 传 context 和一个或多个参数进去, 然后执行这个函数
Neytoph
2017-01-09 18:51:37 +08:00
@zhaixiaohu (举手)这有个五迷!
wangjialin
2017-01-09 19:04:43 +08:00
@zhaixiaohu 是啊 刚把自己的头像恢复过来就被认出来

@fds

@cbais7890 我傻了哈哈 a 本来就返回结果了 为什么这里函数 this 是指向 obj 的呢
haozhang
2017-01-09 19:42:25 +08:00
func.bind 之后 this 已被确定,再次调用 call 或者 apply 妄图改变绑定的 this 都会无效
wangjialin
2017-01-09 22:29:02 +08:00
@haozhang 蟹蟹 我又重新认识了
gleox
2017-01-09 22:58:55 +08:00
zhaixiaohu
2017-01-10 10:01:47 +08:00
@Neytoph v 站五迷群: 5143163 ,来群一起玩啊
zhaixiaohu
2017-01-10 10:02:07 +08:00
@wangjialin v 站五迷群: 5143163 ,来群一起玩啊,都是码农五迷
Neytoph
2017-01-10 10:06:39 +08:00
@zhaixiaohu 已加!
fds
2017-01-10 11:49:59 +08:00
@wangjialin 啊,我说错了, bind 是有用的。 f.bind(a).call(b) 这里 call 能改变 bind 返回的函数的 this 为 b ,但 bind 里面包的函数 f 的 this 已经指定为 a 了,不能改了。
wangjialin
2017-01-10 12:36:43 +08:00
@fds 我原意就是想问 this 指向 应该还指向 a
fhc023
2017-01-21 08:35:27 +08:00
推荐你把这本书的中间几章啃一遍 https://book.douban.com/subject/3590768/ 能看英文就看英文吧 恩

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/333383

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX