JavaScript四種調(diào)用模式和this示例介紹
更新時(shí)間:2014年01月02日 16:05:53 作者:
JavaScript調(diào)用時(shí)除了聲明時(shí)定義的形參外,每個(gè)函數(shù)接受兩個(gè)附加參數(shù):this 和arguments,下面為大家介紹下JavaScript四種調(diào)用模式和this
JavaScript調(diào)用時(shí)除了聲明時(shí)定義的形參外,每個(gè)函數(shù)接受兩個(gè)附加參數(shù):this 和arguments,this在面向?qū)ο缶幊讨蟹浅V匾?,它取決于調(diào)用模式。
JavaScript有四種調(diào)用模式,方法調(diào)用模式,函數(shù)調(diào)用模式,構(gòu)造器調(diào)用模式和apply調(diào)用模式。這些模式在初始化關(guān)鍵參數(shù)this上存在差異。
方法調(diào)用模式:當(dāng)一個(gè)函數(shù)被保存為對(duì)象的一個(gè)屬性時(shí),我們稱它為一個(gè)方法,當(dāng)一個(gè)方法被調(diào)用時(shí),this被綁定到該對(duì)象上。如果調(diào)用表達(dá)式包含一個(gè)屬性取表達(dá)式(即一個(gè).點(diǎn)表達(dá)式或[script]下標(biāo)表達(dá)式),那么它被當(dāng)做一個(gè)方法調(diào)用。
var myObject = {
value: 0;
increment: function(inc){
this.value += typeof inc === 'number' ? inc : 1;
}
};
myObject.increment();
document.writeln(myObject.value);//1
myObject.increment(2);
document.writeln(myObject.value);//2
方法可以使用this去訪問(wèn)對(duì)象,所以它能從對(duì)象中取值或修改對(duì)象。this的綁定發(fā)生在調(diào)用的時(shí)候。這個(gè)超級(jí)遲綁定使得函數(shù)可以對(duì)this高度復(fù)用。通過(guò)this可以取得他們所屬的上下文方法稱為公共方法。
函數(shù)調(diào)用模式:當(dāng)一個(gè)函數(shù)并非一個(gè)對(duì)象的屬性時(shí),那么它被當(dāng)做一個(gè)函數(shù)來(lái)調(diào)用 var sum = add(3, 4);//sum值為7
當(dāng)函數(shù)以此模式調(diào)用時(shí),this被綁定到全局對(duì)象。
構(gòu)造器調(diào)用模式:JavaScript是一門(mén)基于原型繼承的語(yǔ)言。這意味著可以直接從其他對(duì)象繼承屬性。該語(yǔ)言是無(wú)類別的。
如果在函數(shù)前面帶上new來(lái)調(diào)用,那么將創(chuàng)建一個(gè)隱藏連接到該函數(shù)的prototype成員的新對(duì)象,同時(shí)this將會(huì)被綁定到那個(gè)新對(duì)象上。
Apply調(diào)用模式:因?yàn)镴avaScript是一門(mén)函數(shù)式的面向?qū)ο缶幊陶Z(yǔ)言,所以函數(shù)可以擁有方法。
apply方法讓哦我們構(gòu)建一個(gè)參數(shù)數(shù)組并用其去調(diào)用函數(shù)。它也允許我們選擇this的值。
apply方法接受兩個(gè)參數(shù),第一個(gè)將被綁定給this的值,第二個(gè)就是一個(gè)參數(shù)數(shù)組。
JavaScript有四種調(diào)用模式,方法調(diào)用模式,函數(shù)調(diào)用模式,構(gòu)造器調(diào)用模式和apply調(diào)用模式。這些模式在初始化關(guān)鍵參數(shù)this上存在差異。
方法調(diào)用模式:當(dāng)一個(gè)函數(shù)被保存為對(duì)象的一個(gè)屬性時(shí),我們稱它為一個(gè)方法,當(dāng)一個(gè)方法被調(diào)用時(shí),this被綁定到該對(duì)象上。如果調(diào)用表達(dá)式包含一個(gè)屬性取表達(dá)式(即一個(gè).點(diǎn)表達(dá)式或[script]下標(biāo)表達(dá)式),那么它被當(dāng)做一個(gè)方法調(diào)用。
復(fù)制代碼 代碼如下:
var myObject = {
value: 0;
increment: function(inc){
this.value += typeof inc === 'number' ? inc : 1;
}
};
myObject.increment();
document.writeln(myObject.value);//1
myObject.increment(2);
document.writeln(myObject.value);//2
方法可以使用this去訪問(wèn)對(duì)象,所以它能從對(duì)象中取值或修改對(duì)象。this的綁定發(fā)生在調(diào)用的時(shí)候。這個(gè)超級(jí)遲綁定使得函數(shù)可以對(duì)this高度復(fù)用。通過(guò)this可以取得他們所屬的上下文方法稱為公共方法。
函數(shù)調(diào)用模式:當(dāng)一個(gè)函數(shù)并非一個(gè)對(duì)象的屬性時(shí),那么它被當(dāng)做一個(gè)函數(shù)來(lái)調(diào)用 var sum = add(3, 4);//sum值為7
當(dāng)函數(shù)以此模式調(diào)用時(shí),this被綁定到全局對(duì)象。
構(gòu)造器調(diào)用模式:JavaScript是一門(mén)基于原型繼承的語(yǔ)言。這意味著可以直接從其他對(duì)象繼承屬性。該語(yǔ)言是無(wú)類別的。
如果在函數(shù)前面帶上new來(lái)調(diào)用,那么將創(chuàng)建一個(gè)隱藏連接到該函數(shù)的prototype成員的新對(duì)象,同時(shí)this將會(huì)被綁定到那個(gè)新對(duì)象上。
Apply調(diào)用模式:因?yàn)镴avaScript是一門(mén)函數(shù)式的面向?qū)ο缶幊陶Z(yǔ)言,所以函數(shù)可以擁有方法。
apply方法讓哦我們構(gòu)建一個(gè)參數(shù)數(shù)組并用其去調(diào)用函數(shù)。它也允許我們選擇this的值。
apply方法接受兩個(gè)參數(shù),第一個(gè)將被綁定給this的值,第二個(gè)就是一個(gè)參數(shù)數(shù)組。
相關(guān)文章
你不知道的5個(gè)JavaScript中JSON的秘密功能分享
在開(kāi)發(fā)中,我們會(huì)經(jīng)常使用?JSON.stringify(object)?來(lái)序列化對(duì)象,但JSON.stringify方法除了了第一個(gè)參數(shù)外,還有其它參數(shù)可用,今天我們一起來(lái)看看這些參數(shù)是做啥的2023-05-05
IE7中javascript操作CheckBox的checked=true不打勾的解決方法
在IE7下,生成的Checkbox無(wú)法正確的打上勾。 原因是 chkbox控件還沒(méi)初始化(appendChild),就開(kāi)始操作它的結(jié)果2009-12-12
使用js模擬類繼承小例子,學(xué)習(xí)js面向?qū)ο蟮呐笥芽梢詤⒖枷隆?/div> 2010-07-07
uni-app的h5頁(yè)面中onHide/onUnload方法不觸發(fā)的問(wèn)題解決方法
uni-app的頁(yè)面的生命周期包括onInit、onLoad、onShow、onReady、onHide和onUnload等幾個(gè)階段,這篇文章主要給大家介紹了關(guān)于uni-app的h5頁(yè)面中onHide/onUnload方法不觸發(fā)的問(wèn)題解決方法,需要的朋友可以參考下2023-12-12
js 靜態(tài)動(dòng)態(tài)成員 and 信息的封裝和隱藏
一下用面向?qū)ο蟮南嚓P(guān)概念來(lái)解釋js中的仿面向?qū)ο螅驗(yàn)閖s中不像其他語(yǔ)言,不存在面向?qū)ο笳Z(yǔ)言的相關(guān)特性2011-05-05
JS將網(wǎng)址url轉(zhuǎn)化為JSON格式的方法
這篇文章主要介紹了JS將網(wǎng)址url轉(zhuǎn)化為JSON格式的方法,需要的朋友可以參考下2018-07-07
JavaScript變量作用域及內(nèi)存問(wèn)題實(shí)例分析
這篇文章主要介紹了JavaScript變量作用域及內(nèi)存問(wèn)題,結(jié)合實(shí)例形式分析了javascript全局變量、局部變量、塊級(jí)作用域等概念及內(nèi)存優(yōu)化問(wèn)題相關(guān)操作技巧,需要的朋友可以參考下2019-06-06最新評(píng)論

