将指向对象方法的指针安全地传递给google.maps.event.addListener

时间:2014-03-16 12:05:43

标签: javascript oop scope maps

将方法指针传递给google.maps.event.addListener时,Google地图似乎会用this的实例覆盖它的google.maps.Map引用,因此如果方法引用它会使其无效它内部的任何原型成员。

长话短说,如果我将myObj.MyMethod作为事件回调传递,则在执行时MyMethod.this引用将是google.maps.Map而不是myObj的实例

有没有办法安全地将方法指针传递给addListener并保持其所有引用不变?

非常感谢!

1 个答案:

答案 0 :(得分:1)

当您使用addListener()传递方法时,方法的传递对象将在发生事件时丢失,因此未定义结果方法,您应该调用类似

的方法
google.maps.event.addListener('someEvent', function (){
     myObj.MyMethod.call(myObj); //invoked MyMethod with reference myObj

    //myObj.MyMethod.apply(myObj); <= you can use apply method also
})