簡體   English   中英

如何在JavaScript中將帶有參數的函數傳遞給函數

[英]How to pass a function with arguments, to a function, in javascript

給定這個定義...

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,找到它了,發誓我已經嘗試過了,一定是有類型或平滑的!

google.maps.event.addDomListener(window, 'load', function(){initialize(1,2);});
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, 當前函數的參數應用於被調用函數的參數(initialize)。

第二個調用在偵聽器的上下文中初始化。 如果不需要上下文,則只需執行以下操作:

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

這是其中的原因之一Function.prototype.bind可以實現的,記住這this你想太多,雖然。

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

上述將調用initialisedthis設定為window和第一兩個參數5818 在此示例中可能更容易理解

function foo(a, b, c) {
    console.log(this, a, b, c);
}
var foobar = foo.bind(null, 1, 2);
foobar('bar');
// window, 1, 2, "bar"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM