JavaScript四種調用模式和this示例介紹
更新時間:2014年01月02日 16:05:53 作者:
JavaScript調用時除了聲明時定義的形參外,每個函數(shù)接受兩個附加參數(shù):this 和arguments,下面為大家介紹下JavaScript四種調用模式和this
JavaScript調用時除了聲明時定義的形參外,每個函數(shù)接受兩個附加參數(shù):this 和arguments,this在面向對象編程中非常重要,它取決于調用模式。
JavaScript有四種調用模式,方法調用模式,函數(shù)調用模式,構造器調用模式和apply調用模式。這些模式在初始化關鍵參數(shù)this上存在差異。
方法調用模式:當一個函數(shù)被保存為對象的一個屬性時,我們稱它為一個方法,當一個方法被調用時,this被綁定到該對象上。如果調用表達式包含一個屬性取表達式(即一個.點表達式或[script]下標表達式),那么它被當做一個方法調用。
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去訪問對象,所以它能從對象中取值或修改對象。this的綁定發(fā)生在調用的時候。這個超級遲綁定使得函數(shù)可以對this高度復用。通過this可以取得他們所屬的上下文方法稱為公共方法。
函數(shù)調用模式:當一個函數(shù)并非一個對象的屬性時,那么它被當做一個函數(shù)來調用 var sum = add(3, 4);//sum值為7
當函數(shù)以此模式調用時,this被綁定到全局對象。
構造器調用模式:JavaScript是一門基于原型繼承的語言。這意味著可以直接從其他對象繼承屬性。該語言是無類別的。
如果在函數(shù)前面帶上new來調用,那么將創(chuàng)建一個隱藏連接到該函數(shù)的prototype成員的新對象,同時this將會被綁定到那個新對象上。
Apply調用模式:因為JavaScript是一門函數(shù)式的面向對象編程語言,所以函數(shù)可以擁有方法。
apply方法讓哦我們構建一個參數(shù)數(shù)組并用其去調用函數(shù)。它也允許我們選擇this的值。
apply方法接受兩個參數(shù),第一個將被綁定給this的值,第二個就是一個參數(shù)數(shù)組。
JavaScript有四種調用模式,方法調用模式,函數(shù)調用模式,構造器調用模式和apply調用模式。這些模式在初始化關鍵參數(shù)this上存在差異。
方法調用模式:當一個函數(shù)被保存為對象的一個屬性時,我們稱它為一個方法,當一個方法被調用時,this被綁定到該對象上。如果調用表達式包含一個屬性取表達式(即一個.點表達式或[script]下標表達式),那么它被當做一個方法調用。
復制代碼 代碼如下:
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去訪問對象,所以它能從對象中取值或修改對象。this的綁定發(fā)生在調用的時候。這個超級遲綁定使得函數(shù)可以對this高度復用。通過this可以取得他們所屬的上下文方法稱為公共方法。
函數(shù)調用模式:當一個函數(shù)并非一個對象的屬性時,那么它被當做一個函數(shù)來調用 var sum = add(3, 4);//sum值為7
當函數(shù)以此模式調用時,this被綁定到全局對象。
構造器調用模式:JavaScript是一門基于原型繼承的語言。這意味著可以直接從其他對象繼承屬性。該語言是無類別的。
如果在函數(shù)前面帶上new來調用,那么將創(chuàng)建一個隱藏連接到該函數(shù)的prototype成員的新對象,同時this將會被綁定到那個新對象上。
Apply調用模式:因為JavaScript是一門函數(shù)式的面向對象編程語言,所以函數(shù)可以擁有方法。
apply方法讓哦我們構建一個參數(shù)數(shù)組并用其去調用函數(shù)。它也允許我們選擇this的值。
apply方法接受兩個參數(shù),第一個將被綁定給this的值,第二個就是一個參數(shù)數(shù)組。
相關文章
IE7中javascript操作CheckBox的checked=true不打勾的解決方法
在IE7下,生成的Checkbox無法正確的打上勾。 原因是 chkbox控件還沒初始化(appendChild),就開始操作它的結果2009-12-12
uni-app的h5頁面中onHide/onUnload方法不觸發(fā)的問題解決方法
uni-app的頁面的生命周期包括onInit、onLoad、onShow、onReady、onHide和onUnload等幾個階段,這篇文章主要給大家介紹了關于uni-app的h5頁面中onHide/onUnload方法不觸發(fā)的問題解決方法,需要的朋友可以參考下2023-12-12
js 靜態(tài)動態(tài)成員 and 信息的封裝和隱藏
一下用面向對象的相關概念來解釋js中的仿面向對象,因為js中不像其他語言,不存在面向對象語言的相關特性2011-05-05

