Js中的回调

======================JS中的回调=====================
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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值