javascript中的匿名函数和空返回对象
下面是一个将图像预加载到页面上的函数的源代码,作者添加了一些注释来解释代码是如何工作的,但我仍然不完全理解它的全部内容。具体来说,他声称该函数的返回值是一个空对象,带有一个“done()”方法,该方法调用预定义的匿名函数“postaction()”。此代码的用户是否应该在第2行的空邮递功能中输入自己的代码?如果它是这样工作的,那么返回对象中的“postaction=f | | postaction”做什么呢 源代码:javascript中的匿名函数和空返回对象,javascript,object,callback,return,anonymous-function,Javascript,Object,Callback,Return,Anonymous Function,下面是一个将图像预加载到页面上的函数的源代码,作者添加了一些注释来解释代码是如何工作的,但我仍然不完全理解它的全部内容。具体来说,他声称该函数的返回值是一个空对象,带有一个“done()”方法,该方法调用预定义的匿名函数“postaction()”。此代码的用户是否应该在第2行的空邮递功能中输入自己的代码?如果它是这样工作的,那么返回对象中的“postaction=f | | postaction”做什么呢 源代码: function preloadimages(arr){ var newi
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
}
}
}
函数预加载图像(arr){
var newimages=[],loadeImage=0
var postaction=function(){}
var arr=(typeof arr!=“object”)?[arr]:arr
函数imageloadpost(){
加载图像++
如果(LoadeImage==arr.length){
postaction(newimages)//调用postaction并作为参数传入newimages数组
}
}
对于(var i=0;i,您可以为postaction输入自己的函数,尽管它不是您可能期望的回调函数
但是,它返回一个包含done函数的对象
如果你这样做,就像
preloadimages().done(function () {
console.log('done')
});
您的函数将被执行。如果您不将fnction作为done的参数提供,则将调用默认的postaction而不执行任何操作,因为它是一个空函数您可以为postaction输入自己的函数,尽管它不是您可能期望的回调函数
但是,它返回一个包含done函数的对象
如果你这样做,就像
preloadimages().done(function () {
console.log('done')
});
您的函数将被执行。如果您不将fnction作为done的参数提供,则将调用默认的postaction,而不执行任何操作,因为读取该代码时它是一个空函数,看起来您不打算重新定义postaction()
-事实上,您根本不需要修改任何代码。实际上,您需要将函数作为参数传递给done()
函数,该函数将在成功加载图像后调用(“回调”函数)
这一行:
postaction=f || postaction
表示“如果f有值,则将f的值分配给postaction,否则将postaction分配给它本身”(即,不要更改它)。从阅读该代码来看,您似乎不打算重新定义postaction()
-事实上,您根本不需要修改任何代码。实际上,您需要将函数作为参数传递给done()
函数,该函数将在成功加载图像后调用(“回调”函数)
这一行:
postaction=f || postaction
表示“如果f有值,则将f的值分配给postaction,否则将postaction分配给自身”(即,不要更改它).我不知道这段代码的确切用途,但是返回的对象有一个函数done,可以使用函数参数,也可以不使用函数参数
在完成之后,这句话
f || postaction
如果f不是null/undefined,则表示f或postaction返回f,如果调用
myreturnObject.done();
myreturnObject.done(function(newImages) { ... });
这评估为
postaction = postaction
postaction = f.
因为f不是define。如果调用
myreturnObject.done();
myreturnObject.done(function(newImages) { ... });
这评估为
postaction = postaction
postaction = f.
然后在imageLoadPost函数的for循环中使用Postaction。如果您想在那里进行一些自己的编码,可以将其作为参数传递给done方法,如图所示。如果您不需要在那里进行任何额外编码,请不要将函数传递给Postaction。然后将调用定义为fallback的空Postaction函数。我不知道是什么这段代码正是用来做什么的,但是返回的对象有一个函数done,可以使用函数参数,也可以不使用函数参数
在完成之后,这句话
f || postaction
如果f不是null/undefined,则表示f或postaction返回f,如果调用
myreturnObject.done();
myreturnObject.done(function(newImages) { ... });
这评估为
postaction = postaction
postaction = f.
因为f不是define。如果调用
myreturnObject.done();
myreturnObject.done(function(newImages) { ... });
这评估为
postaction = postaction
postaction = f.
然后在imageLoadPost函数的for循环中使用Postaction。如果您想在那里进行一些自己的编码,可以将其作为参数传递给done方法,如图所示。如果不需要在那里进行任何额外编码,请不要将函数传递给Postaction。然后将调用定义为fallback的空Postaction函数。如果对象e empty它将不包含done方法。在作者的页面上,他将其称为空对象。看起来他使用术语“blank object”的意思不正确。此外,名为postaction的函数不能是匿名函数,您(或outher)需要Means可能是一个惰性的或空的函数:调用它除了隐式返回未定义的
之外没有任何作用。如果对象为空,它将不包含done方法。在作者的页面上,他将其称为空对象,这看起来像是他错误地使用了术语“blank object”来表示。此外,不能使用名为postaction的函数一个匿名函数,您(或输出者)的意思可能是一个惰性的或空的函数:调用它除了隐式返回未定义的undefined