溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中的this有什么用

發布時間:2020-12-03 09:56:48 來源:億速云 閱讀:159 作者:小新 欄目:web開發

小編給大家分享一下JavaScript中的this有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

只需要記住幾個口訣就能正確找到this的指向:

1.不管函數或者方法是如何聲明的,要看這個函數或者方法最終是誰調用的,誰最終調用這個函數或方法,那么這個函數或方法中的this就是誰,(誰點出來的this就是誰).

2.看執行時而非定義時,只要函數(function)沒有綁定在對象上調用,它的 this 就是 window。

3.ES6,箭頭函數中的this 會綁定上下文中的this,創建箭頭函數時this是誰 以后一直都是那個誰

1.普通函數中的this

一個全局函數相當于給window對象添加了一個方法,所以第5行調用welcome函數和第6行調用welcome函數本質是一樣的,所以welcome函數最終是window對象在調用,所以welcome函數內部的this就指向了window對象.

JavaScript中的this有什么用

運行結果為window  ,window.

2.作為對象的方法中的this

sayHi方法是由obj對象點出來調用的,所以sayHi方法中的this指向obj對象.所以輸出的是obj對象中的name的值.

JavaScript中的this有什么用

結果如下

JavaScript中的this有什么用

3.構造函數中的this

(1)直接調用構造函數

第3行,調用cat1函數的時候沒有用new關鍵字,那么這就意味著cat函數是window點出來調用的,所以Student函數中的this就是window,那么第1行第2行就是在給window添加name和age屬性,值分別是露露和12.  然后函數內部沒有寫return關鍵字那默認返回值是undefined.所以cat1接受到的是undefined.

JavaScript中的this有什么用

整個輸出結果如下

JavaScript中的this有什么用

(2)使用new調用構造函數

new關鍵字會創建一個對象,并且會把構造函數中的this指向這個對象,并且還會把這個對象自動返回, 那么執行完第3行代碼, cat1就是那個new關鍵字創建并返回的對象.在第1行第2行也已經給這個對象添加了name和age屬性.

JavaScript中的this有什么用

所以上面的代碼執行結果如下:

JavaScript中的this有什么用

4.  修改函數中this的默認指向:call、 apply、 bind

4.1.call();

語法:函數名.call(期望函數內部this指向誰, 參數1,參數2....);

4.2.apply();

語法:函數名.apply(this的新指向 , 數組或者偽數組);

JavaScript中的this有什么用

輸出結果為:

JavaScript中的this有什么用

apply()和call()輸出結果是一樣的,區別在于apply()只有2個參數,第一個參數是this的新指向,第二個參數是數組或者偽數組,調用的時候會把第二個參數(數組或偽數組)的元素依次的賦值給被調用函數的形參。

適用條件,參數是明確知道數量時用 call 。而不確定的時候用 apply,然后把參數 push 進數組傳遞進去。

4.3.bind();

bind()方法會創建一個新函數,當這個click事件綁定在被調用的時候,它的 this 關鍵詞會被設置成被傳入的值(這里指調用bind()時傳入的參數).

語法:函數名.bind( this的新指向 ,可以寫參數也可以不寫參數 );

用bind()的方式調用getSum()函數,但是此時并不會執行getSum()函數,而是會返回一個和getSum()函數的函數體一模一樣但是this已經修改成obj對象的函數了,這個函數被新聲明的變量接收。 一般在this修改后才轉入實參。

javascript中的函數(普通函數、構造函數)本質上是一個對象,是由Function()構造函數實例化出來的對象,而call、apply、bind這三個方法都是定義在Function.prototype原型中的,那么意味著javascript中的所有函數都可以點出這三個方法來

5.上下文調用模式注意細節:

5.1如果使用函數上下文模式調用函數,第一個參數不是指向一個對象,而是指向一個 基本數據類型的值,那么函數中this的指向該類型的值?代碼如下:

JavaScript中的this有什么用

5.2哪個函數使用上下文模式調用,修改的this就是哪個函數的

JavaScript中的this有什么用

JavaScript中的this有什么用

6.函數上下文調用模式的使用場景

6.1元素都是整數的數組求最大值

6.2偽數組轉換成真數組

6.3借用構造函數繼承

6.4 檢測數據類型

以上是“JavaScript中的this有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女