以下は、画像をページにプリロードする関数のソース コードです。作成者は、コードがどのように機能するかを説明するためにいくつかのコメントを追加しましたが、まだすべてを完全には理解していません。具体的に言うと、彼は、この関数の戻り値は、定義済みの無名関数「postaction()」を呼び出す「done()」メソッドを持つ空のオブジェクトであると主張しています。このコードのユーザーは、2 行目の空のポストアクション関数に独自のコードを入力することになっていますか? それが機能する場合、戻りオブジェクトの「postaction=f || postaction」は何をしますか?
ソースコード:
function preloadimages(arr){
var newimages=[], loadedimages=0
var postaction=function(){}
var arr=(typeof arr!="object")? [arr] : arr
function imageloadpost(){
loadedimages++
if (loadedimages==arr.length){
postaction(newimages) //call postaction and pass in newimages array as parameter
}
}
for (var i=0; i<arr.length; i++){
newimages[i]=new Image()
newimages[i].src=arr[i]
newimages[i].onload=function(){
imageloadpost()
}
newimages[i].onerror=function(){
imageloadpost()
}
}
return { //return blank object with done() method
done:function(f){
postaction=f || postaction
//remember user defined callback functions to be called when images load
}
}
}
著者のページへのリンク: http://www.javascriptkit.com/javatutors/preloadimagesplus.shtml