0

更新 #1
我忘记将当前对象作为第一个参数传递;见K的回答


我在谷歌地图上有以下方法。这些方法可以像这样正常工作:

arc.pLocations(ne, sw,m);
arc.pLikedLocations(ne, sw, m);
arc.pLikedItems(ne, sw, m);

但是,我希望将它们放在这样的数组中,我可以随后调用,但这不起作用(我会第一个承认这是我的问题):

var selected_methods=[arc.pLocations,arc.pLikedLocations,arc.pLikedItems];

// Uncaught TypeError: Object #<Ri> has no method 'lng'  - this is for a variable called sw in pLikedLocations 
$.map(selected_methods, function(val, i){
    console.log("here is index:" + i);
    val.call(ne,sw,m);
});

试图用另一个闭包来包装它,但这也不起作用

$.map(selected_methods, (function(val, i){
  console.log("here is index:" + i);
  val.call(ne,sw,m);
})(val,i)); // Uncaught ReferenceError: val is not defined on this line!

我有以下我正在做一些非常简单的错误。谁能发现问题并帮助我?这是星期六晚上,我想完成这个。

提前谢谢

4

1 回答 1

2

您将错误的上下文传递给call函数。其实,你错过了。尝试这个:

var selected_methods=[arc.pLocations,arc.pLikedLocations,arc.pLikedItems];

$.map(selected_methods, function(val, i){
    console.log("here is index:" + i);
    val.call(arc,ne,sw,m); //Notice the arc
});
于 2013-08-25T04:44:24.363 回答