下面是一個函數的源代碼,它將圖像預加載到頁面上,作者在一些註釋中添加了解釋代碼如何工作的內容,但我仍然不完全理解它。具體來說,他聲稱這個函數的返回值是一個帶有「done()」方法的空對象,該方法調用預定義的匿名函數「postaction()」。這段代碼的用戶是否應該將他/她自己的代碼輸入到第2行的空postaction函數中?如果這就是它的工作原理,那麼返回對象中的「postaction = f || postaction」是做什麼的?javascript中的匿名函數和空返回對象
的源代碼:
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
如果對象是空的,它將不包含done方法。 – 2012-08-01 13:54:50
在作者的頁面上,他將其稱爲空對象 – imkendal 2012-08-01 13:55:45
看起來他錯誤地使用術語「空白對象」來表示[object literal](https://developer.mozilla.org/en/JavaScript/Guide/Values, _Variables,_and_Literals#Object_literals)。 – 2012-08-01 13:57:43