[英]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)
);
上述將調用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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.