函式1 this指向

2022-05-27 03:15:11 字數 1660 閱讀 1231

當我們宣告乙個函式fun時,函式fun具有的屬性、方法如下:

//

屬性(常見)

1.name

2.length

3.arguments(物件,arguments.callee)

4.caller

5.this

6.prototype

7.[[prototype]]

//方法(常見)

1.call()

3.bind()

4.tostring()

由於經常使用this物件,加之this指向常常容易混淆,所以有必要梳理下;關於this指向,應記住這句話:

哪個物件(上下文)呼叫了函式,這個函式中的this就指向誰;如果沒有物件呼叫,this預設指向window(非嚴格模式下);

this的指向跟函式在哪個作用域定義沒有任何關係;只跟誰呼叫了它有關;

var name = "hello outside";

var obj =

a();

settimeout(

function

(),1000)

} };obj.getinfo();

當obj.getinfo()執行時,是obj物件呼叫了getinfo();

@1 函式執行到這裡時,由於obj呼叫了getinfo(),因此this指向obj

@2 在執行此處時,沒有物件呼叫a函式,預設情況下this指向window(非嚴格模式下,嚴格模式時指向undefined)

@3 執行此處時,定時器中this指向window(不管是嚴格還是非嚴格模式下,定時器中**函式都指向window)

如果有時候編寫閉包的方式不同,不容易分辨this指向;

var name = "hello outside";

var obj =

} };obj.getinfo()();

此時控制台列印的結果是:「window」,原因是,執行obj.getinfo()返回乙個函式,然後再執行這個匿名函式,由於沒有任何物件呼叫這個函式,因此預設情況下this指向window;

再來看乙個例子:

var name = "hello outside";

var objone =

};var objtwo =

};objone.getinfo().getinfo();

控制台列印的是 objtwo 物件;

首先: 執行objone.getinfo()時,返回的是objtwo物件

接著:objtwo物件呼叫了getinfo函式,因此this指向objtwo物件

定時器**函式、事件處理程式中的this

預設情況下,定時器**函式中的this指向window物件(瀏覽器中);事件處理程式中的this指向dom物件;

//

定時器 **函式 this-->window

settimeout(function

(),1000)

//事件處理函式 this

document.addeventlistener('click',function

())

參考:[1] 別再為了this發愁了

[2] 掌握js中的this

C this指標 1 this介紹

目錄 1.區分同名變數 2.返回物件的引用 3.關於this指標的注意事項 3.1不能賦值 3.2靜態函式中沒有this 3.3小心地delete this c 中的this指標,在所有非靜態成員函式的呼叫中做為乙個隱藏引數進行傳遞,並且在函式體中可以做為乙個區域性變數使用。this是乙個const...

指向函式的指標 1

先來看乙個函式 cpp view plain copy intsum inta,intb 這個函式,呼叫方式可以如 sum 1,2 若要表示函式的指標,可以用 sum,也可以將sum前邊的位址操作符 去掉,對於普通函式,位址操作符 是可選的。下面介紹函式指標變數和函式指標型別 1.函式指標變數 cp...

面試常見問題 1 this的常見問題

this 的含義 this關鍵字是乙個非常重要的語法點。毫不誇張地說,不理解它的含義,大部分開發任務都無法完成。前一章已經提到,this可以用在建構函式之中,表示例項物件。除此之外,this還可以用在別的場合。但不管是什麼場合,this都有乙個共同點 它總是返回乙個物件。簡單說,this就是屬性或方...