1

鉴于这个定义...

function initialize(lat, lng)
{
   //do stuff
}

如何在此调用中调用初始化函数的参数?

google.maps.event.addDomListener(window, 'load', initialize);

我想做这样的事情:

google.maps.event.addDomListener(window, 'load', initialize(58,18));

即使没有传递任何参数,调用 1 也可以工作,但它类似于我想要完成的调用 2。

抱歉,这可能很容易,我是 javascript 的新手......(但我已经用谷歌搜索了很长一段时间)

编辑:

Grrr,找到了,发誓我已经试过了,一定是有类型或 smoething 的!

google.maps.event.addDomListener(window, 'load', function(){initialize(1,2);});
4

2 回答 2

0
google.maps.event.addDomListener(window, 'load', function () {
    push.call(arguments, 58);
    push.call(arguments, 18);
    initialize.apply(this, arguments);
});

不完全是,initialize 没有 DomListener 的签名,最好这样做:

google.maps.event.addDomListener(window, 'load', function () {
    initialize.call(this, 58, 18);
});

第一个将两个参数推送到特殊参数伪数组(因此需要call),然后在侦听器上下文的上下文中调用 initialize ,当前函数的参数应用于被调用函数的参数(初始化)。

第二个调用在侦听器的上下文中初始化。如果您不需要上下文,您可以简单地执行以下操作:

google.maps.event.addDomListener(window, 'load', function () {
    initialize(58, 18);
});
于 2013-10-02T17:53:03.100 回答
0

这是Function.prototype.bind可以实现的事情之一,但请记住this您也想要什么。

google.maps.event.addDomListener(
    window,
    'load',
    initialize.bind(null, 58, 18)
);

上面将调用set toinitialised和前两个参数, 。在这个例子中可能更容易理解thiswindow5818

function foo(a, b, c) {
    console.log(this, a, b, c);
}
var foobar = foo.bind(null, 1, 2);
foobar('bar');
// window, 1, 2, "bar"
于 2013-10-02T18:05:32.333 回答