【发布时间】:2010-08-30 02:41:12
【问题描述】:
我有一个谷歌地图,我正在向不同的事物添加事件侦听器。例如,我有一个 Point 对象,对于这个对象,我一直在添加事件:
google.maps.event.addListener(this.marker, 'click', (function(point) {
return function(event) {
alert(point.index);
}})(this));
我有很多这样的事件(一个用于“单击”、“右键单击”、“双击”等)。
当我添加事件时,我只围绕当前点创建一个闭包。然而,我想做的只是:
var point = this;
google.maps.event.addListener(this.marker, 'click', function(event) {
alert(point.index);
});
我一直在避免这种情况,但有两个原因。
一个是我见过比我更了解 Javascript 的人使用“个人”闭包,所以我认为他们一定有充分的理由。
第二个是因为(而且我对 Javascript 的解释方式一无所知)我想知道创建一个大型闭包是否会捕获我不会在我的事件函数中使用的所有其他变量(例如 'var color ')。这会导致性能问题吗?
感谢您的帮助!
【问题讨论】:
标签: javascript closures