js函數(shù)調(diào)用常用方法詳解
來(lái)源 javascript語(yǔ)言精粹。這不是書上的源代碼。
js的函數(shù)調(diào)用會(huì)免費(fèi)奉送兩個(gè)而外的參數(shù)就是 this 和 arguments 。arguments是參數(shù)組,他并不是一個(gè)真實(shí)的數(shù)組,但是可以使用.length方法獲得長(zhǎng)度。
書上有說(shuō)4中調(diào)用方式:
方法調(diào)用模式
函數(shù)調(diào)用模式
構(gòu)造器調(diào)用模式
apply調(diào)用模式
下面我們來(lái)看看一些實(shí)例更好理解。
1:方法調(diào)用模式
請(qǐng)注意this此時(shí)指向myobject。
/*方法調(diào)用模式*/
var myobject={
value:0,
inc:function(){
alert(this.value)
}
}
myobject.inc()
2:函數(shù)調(diào)用模式
請(qǐng)注意this此時(shí)指向window。
/*函數(shù)調(diào)用模式*/
var add=function(a,b){
alert(this)//this被綁頂?shù)絯indow
return a+b;
}
var sum=add(3,4);
alert(sum)
3:構(gòu)造器調(diào)用模式
javascript語(yǔ)言精粹一書建議摒棄這中方式。因?yàn)橛懈玫姆绞?。這里先不介紹。下次發(fā)表博文的時(shí)候貼出來(lái)。
會(huì)在這里加一個(gè)連接。
/*構(gòu)造器調(diào)用模式 摒棄*/
var quo=function(string){
this.status=string;
}
quo.prototype.get_status=function(){
return this.status;
}
var qq=new quo("aaa");
alert(qq.get_status());
4:apply調(diào)用模式
==我們可以來(lái)看一個(gè)更有用的apply實(shí)例??醋钕旅娴拇a。
/*apply*/
//注意使用了上面的sum函數(shù)
//與myobject
//這中調(diào)用方式的優(yōu)點(diǎn)在于可以指向this指向的對(duì)象。
//apply的第一個(gè)參數(shù)就是this指針要指向的對(duì)象
var arr=[10,20];
var sum=add.apply(myobject,arr);
alert(sum);
看這個(gè)apply真正應(yīng)用。bind這是一個(gè)綁定時(shí)間的函數(shù)。
var bind=function(object,type,fn){
if(object.attachEvent){//IE瀏覽器
object.attachEvent("on"+type,(function(){
return function(event){
window.event.cancelBubble=true;//停止時(shí)間冒泡
object.attachEvent=[fn.apply(object)];//----這里我要講的是這里
//在IE里用attachEvent添加一個(gè)時(shí)間綁定以后。
//this的指向不是到object對(duì)象本身所以。我們綁定的function里的this.id是無(wú)法工作的。
//但是如果我們用fn.apply(object)
//這里可以看出我們是把a(bǔ)pply的第一個(gè)對(duì)象也就是this的指向變更給了object所以this.id就變成了
//object.id 可以正常工作了。
}
})(object),false);
}else if(object.addEventListener){//其他瀏覽器
object.addEventListener(type,function(event){
event.stopPropagation();//停止時(shí)間冒泡
fn.apply(this)
});
}
}
bind(document.getElementById("aaa"),"click",function(){alert(this.id)});
相關(guān)文章
js關(guān)于字符長(zhǎng)度限制的問題示例探討
字符長(zhǎng)度限制在某些特殊的使用場(chǎng)合還是比較實(shí)用的,下面為大家用示例探討下,感興趣的朋友可以參考下2014-01-01
MVC+Layui彈出表單模態(tài)框的實(shí)現(xiàn)代碼
這篇文章主要介紹了MVC+Layui彈出表單模態(tài)框的實(shí)現(xiàn)代碼,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)
下面小編就為大家?guī)?lái)一篇深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
使用原生JS獲取select元素選中的value和text值
這篇文章介紹了使用原生JS獲取select元素選中的value和text值,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03

