js中this的四種使用方法

2022-09-06 14:12:15 字數 2361 閱讀 7540

0x00:js中this的四種呼叫模式

1,方法呼叫模式

2,函式呼叫模式

3,構造器呼叫模式 

0x01:第一種:方法呼叫模式 (也就是用.呼叫的)this就是這個物件本身

當乙個函式被儲存為物件的乙個屬性時,我們稱它為乙個方法,當乙個方法被呼叫時,this被繫結到該物件,如果乙個呼叫表示式包含乙個屬性表示式(即乙個.點表示式或者[subscript]下標表示式)那麼它被當做乙個方法呼叫.

var

myobject

=

}

myobject

.increment

();

document

.writeln

(myobject

.value

);//1

myobject

.increment(2

);

document

.writen

(myobject

.value

;)

方法可以使用this去訪問物件,所以它能從物件中取得或修改該物件,this到物件的繫結發生在呼叫它的時候,這個超級「遲繫結」(very later binding)使用函式可以對this高度復用,通過this可取得它們所屬物件的上下文的方法稱為公共方法。  

0x02:第二種:函式呼叫模式

當函式並非乙個物件的屬性時,那麼它被當做乙個函式來呼叫:

var

sum

=add(3

,4);

當函式以些模式呼叫時,this被繫結到全域性物件,這是語言設計上的乙個錯誤,如果語言設計正確,當內部函式被呼叫時,this應該仍然繫結到外部函式的this物件,這個錯誤設計的後果就是方法不能利用內部函式來幫助它工作,因為內部函式的this被繫結了錯誤的值,所以不能共享該方法對物件的訪問權,有乙個很容易的解決辦法如果該方法定義乙個變數並給它賦值為this,那麼內部函式就可以通過這個變數來訪問到this

//給myobject增加乙個double方法

myobject

.double

=function

()

helper

();以函式的形式來呼叫

helper

}

//以方法的形式來呼叫double

myobject

.double

();

document

.wtiten

(myobject

.getvalue

());

//6

0x03:第三種:構造函式呼叫模式

var

class

=function

()

var

class

=new

class

();

console

.log

(class

.value

);//100

我們通過new關鍵字來呼叫建構函式,此時this會繫結在該新物件上(也就是這個例項物件上)

var

myobject

=;

var

foo

=function

();

foo

();//global

foo.(

myobject

);//

foo

.call

(myobject

);//

var

newfoo

=foo

.bind

(myobject

);

newfoo

();//

四種委託使用方法

public delegate int methoddelegate int x,int y delegate 定義乙個委託 例項化乙個委託物件 methoddelegate methoddelegate new methoddelegate add console.writeline method...

HTML a標籤的四種狀態使用方法

在看網頁源 的時候遇到a link和a visited覺得很有意思,好奇地查了一下相關解釋。根據mdn docs記錄,元素也成為錨元素,可以建立通向其他網頁 檔案 同一頁面內的位置 電子郵件位址或任何其他 url 的超連結。常用href屬性來指示鏈結的目標位址 target屬性用來規定在什麼位置開啟...

JS中this的四種用法

1.在一般函式方法中使用 this 指代全域性物件 functiontest test 1 2.作為物件方法呼叫,this 指代上級物件 function test var o o.x 1 o.m test o.m 1 3.作為構造函式呼叫,this 指代new 出的物件 function test...