======================JS中的回调=====================
Js中的callback机制,即回调.
JS中用到回调的几种情况:
1.动态加载(外部)js的时候,在加载完成之后进行一些操作,可以使用callback
2.加载iframe时也可以通过callback执行一些操作
3.ajax的使用,提交请求后得到的返回值用callback机制解析使用
4.链式调用的时候,在赋值器方法中(或者本身没有返回值的方法中)很容易实现链式调用,而取值器相对来说不好实现链式调用,因为你需要取值器返回你需要的数据而不是this指针,如果要实现链式方法,可以用回调函数来实现,
5.settimeout、setInterval的函数调用得到其返回值,由于两个函数都异步,无法在主体里等待它们的返回值,它们被打开的时候程序也不会停下来等待,只能使用callback。
一个简单的回调例子:
使用方式:
如果取值器你也想支持链式调用?那么就采用回调函数来实现,将本来应该返回的值直接传给回调函数,而return仍然返回this指针。接着上面的Dog类写一个方法:
使用方式:
另外判断iframe是否加载完成的方法如下:
Js中的callback机制,即回调.
JS中用到回调的几种情况:
1.动态加载(外部)js的时候,在加载完成之后进行一些操作,可以使用callback
2.加载iframe时也可以通过callback执行一些操作
3.ajax的使用,提交请求后得到的返回值用callback机制解析使用
4.链式调用的时候,在赋值器方法中(或者本身没有返回值的方法中)很容易实现链式调用,而取值器相对来说不好实现链式调用,因为你需要取值器返回你需要的数据而不是this指针,如果要实现链式方法,可以用回调函数来实现,
5.settimeout、setInterval的函数调用得到其返回值,由于两个函数都异步,无法在主体里等待它们的返回值,它们被打开的时候程序也不会停下来等待,只能使用callback。
一个简单的回调例子:
function Dog(name,color){
this.name=name||"";
this.color=color||"";
}
Dog.prototype.setName=function(name){
this.name=name;
return this;
};
Dog.prototype.setColor(color){
this.color=color;
return this;
};
Dog.prototype.yelp(){
alert("我的名字叫:"+this.name+",我的颜色是:"+this.color);
return this;
};
使用方式:
var dog = new Dog();
dog.setName("旺财").setColor("白色").yelp();
如果取值器你也想支持链式调用?那么就采用回调函数来实现,将本来应该返回的值直接传给回调函数,而return仍然返回this指针。接着上面的Dog类写一个方法:
Dog.prototype.getName(callback){
callback.call(this,this.name);
return this;
}
使用方式:
function showName(name){
alert(name);
}
dog.setName("旺财").getName(showName).setColor("白色");
另外判断iframe是否加载完成的方法如下:
var iframe = document.createElement("iframe");
iframe.src = "http://www.planabc.net";
if (iframe.attachEvent)
{
iframe.attachEvent("onload", function(){
alert("Local iframe is now loaded.");
});
}
else
{
iframe.onload = function(){
alert("Local iframe is now loaded.");
};
}
document.body.appendChild(iframe);