js中的this物件詳解
一、方法呼叫模式
當函式被儲存為乙個物件的屬性時,它就可稱為這個物件的方法。當乙個方法被呼叫時,this被繫結到這個物件上。如果呼叫
表示式包含乙個提取屬性的動作(. 或 ),那麼它被稱為方法呼叫。例如:
var name = "window";
var obj =
};obj.sayname(); //kxy
sayname函式作為物件obj的方法呼叫,所以函式體中的this就代表obj物件。
二、函式呼叫模式
當乙個函式並非乙個物件的屬性時,那麼它就是被當做函式來呼叫的。在此種模式下,this被繫結為全域性物件,在瀏覽器
環境下就是window物件。例如:
var name = "window";
function sayname()
sayname();
sayname以函式呼叫模式呼叫,所以函式體中的this代表window物件。
三、建構函式模式
如果在乙個函式前面加上new關鍵字來呼叫,那麼就會建立乙個連線到該函式的prototype成員的新物件,同時,this會被繫結
到這個新物件上。這種情況下,這個函式就可以成為此物件的建構函式。例如:
function obj()
var person = new obj();
console.log(person.name); //kxy
obj作為建構函式被呼叫,函式體內的this被繫結為新建立的物件person。
自此,函式呼叫的4種模式就都介紹完了,this的繫結規律也就是以上幾種,萬變不離其宗。為了簡單明瞭的介紹4種模式,以上的例子都比較簡單,那麼下面就跟我一起做乙個稍複雜的練習,檢驗下自己是否真正掌握了this繫結物件的方法吧!
var name = "window";
function showname()
var person1 =
var person2 =
}person1.sayname(); //kxy
person2.sayname(); //window
首先心中時刻提醒自己this是在函式執行時被繫結的,不要被任何賦值語句打亂陣腳。
先看第乙個執行語句:person1.sayname(); 首先確定這是方法呼叫模式,物件為person1,再看sayname被賦值為全域性函式物件showname,在showname執行時,this繫結的是person1,所以結果為」kxy」。
再看第二個執行語句:person2.sayname(); 這還是方法呼叫模式,物件為person2,呼叫的是它的sayname方法。再看sayname函式體,發現函式體最終執行的函式是fun,fun是用函式呼叫模式呼叫的。而fun最終也被賦值為showname函式,因為fun是用函式呼叫模式呼叫的,所以這裡的this繫結為window,結果為」window「。
this詳解與物件導向程式設計
js中的this物件詳解 一 方法呼叫模式 當函式被儲存為乙個物件的屬性時,它就可稱為這個物件的方法。當乙個方法被呼叫時,this被繫結到這個物件上。如果呼叫 表示式包含乙個提取屬性的動作 或 那麼它被稱為方法呼叫。例如 var name window var obj obj.sayname kxy...
物件導向程式設計與面向過程程式設計
面向過程程式設計 面向過程程式設計是一種以過程為中心的程式設計思想,分析出解決問題的步驟,然後用函式把這些步驟一步一步實現。面向過程程式設計,資料和對資料的操作是分離的。物件導向程式設計 物件導向程式設計是將事物物件化,通過物件通訊來解決問題。物件導向程式設計,資料和對資料的操作是繫結在一起的。物件...
面向過程程式設計與物件導向程式設計
舉個例子,比如開車 加速 減速 剎車。用面向過程來說就是你要先有乙個車,然後這四個分別是4件事,也就是說你要寫4個函式,分別是開車 加速 減速 剎車,這分別是四個事件,如果使用的話要呼叫4個函式。但是對於物件導向的程式設計來說,我們關心的是車這個類,而不是開車 加速 減速和剎車這四個過程。這4個過程...