鉴于此定义......
function initialize(lat, lng)
{
//do stuff
}
如何在此调用中调用initialize函数的参数?
google.maps.event.addDomListener(window, 'load', initialize);
我想做这样的事情:
google.maps.event.addDomListener(window, 'load', initialize(58,18));
即使没有传递任何参数,调用1仍可正常工作,但它与我想要完成的调用2类似。
对不起,这可能很容易,我是javascript的新手......(但我已经用Google搜索了很长时间了)
编辑:
Grrr,发现它,发誓我已经尝试过了,一定有类型或者是smoething!
google.maps.event.addDomListener(window, 'load', function(){initialize(1,2);});
答案 0 :(得分:0)
google.maps.event.addDomListener(window, 'load', function () {
push.call(arguments, 58);
push.call(arguments, 18);
initialize.apply(this, arguments);
});
不完全,初始化没有DomListener的签名,最好这样做:
google.maps.event.addDomListener(window, 'load', function () {
initialize.call(this, 58, 18);
});
第一个将两个参数推送到特殊的arguments伪数组(因此需要call),然后在监听器的上下文中调用initialize,applying参数来自当前函数的被调用函数的参数(初始化)。
第二个调用在侦听器的上下文中初始化。如果您不需要上下文,则可以执行以下操作:
google.maps.event.addDomListener(window, 'load', function () {
initialize(58, 18);
});
答案 1 :(得分:0)
这是Function.prototype.bind
可以实现的事情之一,但也要记住你想要的this
。
google.maps.event.addDomListener(
window,
'load',
initialize.bind(null, 58, 18)
);
以上内容会调用initialised
,this
设置为window
,前两个参数58
,18
。在这个例子中可能更容易理解
function foo(a, b, c) {
console.log(this, a, b, c);
}
var foobar = foo.bind(null, 1, 2);
foobar('bar');
// window, 1, 2, "bar"