作者alair99 (I think home)
看板Ajax
标题[问题] 请问return function的意义
时间Mon Aug 25 17:08:04 2014
程式码请参考
http://jsbin.com/sirotikujicu/1/edit?html,output
这个程式主要是用来让使用者点选google map上的marker之後,
跳出一个infowindow,然後显示其文字。
其中有一段
google.maps.event.addListener(marker,'click', function(content){
return function() {
infowindow.setContent(content);//set the content
infowindow.open(map,this);
}
}(content));
请问这一段第2行为什麽要用return function ,跟第4行的this有关吗?
礼拜六参考google大神写的,
但是现在竟然看不懂了 = =|||
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.114.69.226
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ajax/M.1408957694.A.C67.html
1F:推 qwer820404: 如果没搞错的话 是闭包吗 08/25 21:53
2F:推 Panasonic: 跟content比较有关,立即执行式喂进去返回一个callback 08/25 23:39
3F:推 Panasonic: 用闭包来作一个wrapper,很常见的方式 08/25 23:42
4F:推 s25g5d4: 是野生的闭包没错, 因为事件触发一定在 for 回圈结束後 08/26 00:05
5F:→ s25g5d4: 若没有用闭包包起来 那麽 content 永远是回圈最後一次 08/26 00:06
6F:→ s25g5d4: 的资料, 用闭包包起来才可以保存 content 不被盖掉 08/26 00:06
7F:→ s25g5d4: 至於那个 this 跟闭包无关, 就只是 handler 执行时可能 08/26 00:07
8F:→ s25g5d4: 用了 call 或 apply 把 this 改成 marker 08/26 00:07
9F:→ s25g5d4: 稍微修改一下就能验证 this === marker 08/26 00:08
10F:→ alair99: 谢谢楼上各位大大,我再找时间研究一下 :) 08/27 12:09