您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么改變JS中的this指向”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
JS的this指向
正常函數的this指向
1.全局調用 函數名( ) 指向 window
2.對象調用 對象.函數名( ) 誰調用指向誰 (.前面是誰就指向誰)
3.自執行的函數 指向window
4.事件處理函數 指向事件源
5.定時器處理函數 指向事件源
6.函數定義了未調用的時候指向不確定
強行改變this指向的方法
call( )
語法:
函數名.call(你要改變的函數的 this 指向, 第二個參數開始,依次是給函數傳遞的參數)
會直接把函數給調用
第一個參數如果不寫或者寫一個 null,表示 window
語法: 函數名.call(你要改變的函數的 this 指向, 第二個參數開始,依次是給函數傳遞的參數) 會直接把函數給調用 第一個參數如果不寫或者寫一個 null,表示 window
let a = 10; function fn(b) { console.log(this); console.log(b); } fn.call(a,"gg"); //Number {10} 直接調用
apply()
語法: 函數名.apply(你要改變的函數的 this 指向,第二個參數是一個數組(只能有倆個參數) 數組里面每一項依次是給函數傳遞參數) 會直接把函數給調用
let a = 10;
function fn(b,c) {
console.log(this);
console.log(b);
console.log(c);
}
fn.apply(a,["bb","cc"]); //Number {10} 直接調用
call ( ) 和 apply ( ) 的方法實際上功能是一樣的,只是傳入的參數列表形式不同。
bind()
語法:
函數名.bind(你要改變的函數的 this 指向)
不會立即執行函數
返回值: 就是一個函數(只不過是一個被改變好了 this 指向的函數)
他對函數的參數傳遞有兩個方式
1. 調用返回的函數的時候傳遞
2. 直接從第二個參數開始依次傳遞
let a = 10;
function fn(b,c) {
console.log(this);
console.log(b);
console.log(c);
}
var fn1=fn.bind(a,"bb","cc"); //返回的是改好指向的函數 并沒有調用
fn(); // window 原來函數的指向是不會改變的
fn1(); //Number {10}
“怎么改變JS中的this指向”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。