在JavaScript中,它非常受庫/框架的歡迎,讓我們可以爲數據後處理定義回調函數。load()函數如何讓用戶提供回調?
例如。
load("5", function(element) {
alert(element.name);
});
我不知道load()函數是如何看起來能夠讓用戶提供回調的嗎?
有沒有很好的教程呢?
在JavaScript中,它非常受庫/框架的歡迎,讓我們可以爲數據後處理定義回調函數。load()函數如何讓用戶提供回調?
例如。
load("5", function(element) {
alert(element.name);
});
我不知道load()函數是如何看起來能夠讓用戶提供回調的嗎?
有沒有很好的教程呢?
好了,load
功能看起來是這樣的:
function load(arg, callback) {
var element = { name: "foo " + arg }; // something to pass
if (typeof callback == 'function') {
callback(element);
}
}
隨着typeof
檢查我們確保回調參數是一個我們可以調用的對象,一個func灰。
然後你的例子:
load("5", function(element) {
alert(element.name); // Will show `"foo 5"`.
});
功能就像正常的類型,也可以作爲參數傳遞:
function load(param1, callback) {
// call the callback parameter one second later
setTimeout(function() {
callback(param1);
}, 1000);
}
function load(foo, callback) {
blah(foo);
callback();
}
function load(number, callback){
// do something
if (callback) {
callback();
}
}
在使用JavasScript函數是第一類對象。這幾乎意味着他們像其他內置類型一樣行事。你可以將它們分配給變量,它們傳遞到功能等
這篇文章是一個有用的鏈接解釋函數作爲第一類對象如何在JavaScript中工作: http://helephant.com/2008/08/functions-are-first-class-objects-in-javascript/
喬爾斯波斯基都有詳細而有趣的解釋最後http://www.joelonsoftware.com/items/2006/08/01.html
,因爲他們是第一類對象,功能可以非常容易地接受其他功能參數:一些有趣的事情/方法可以在JavaScript中使用函數作爲第一類對象
要注意function(callback,argumentArray) {
var result = callback.apply(this,argumentArray);
}
點:
this
可以null
。在這種情況下,如果在回調實現中使用this
,那麼它將指向Global
對象。argumentArray
實際上是回調方法所需參數的JavaScript Array
。
哇..那簡單吧。 – 2010-10-08 08:33:33