改變this指向的三種方法


call、apply、bind三者為改變this指向的方法。

共同點:第一個參數都為改變this的指針。若第一參數為null/undefined,this默認指向window

call(無數個參數)

  • 第一個參數:改變this指向
  • 第二個參數:實參
  • 使用之后會自動執行該函數
function fn(a,b,c){
        console.log(this,a+b+c); // this指向window
    }
    fn();
    fn.call(document,1,2,3);//call改變之后this指向document  
    //輸出 #document 6   1,2,3是實參 結果相加為6

apply(兩個參數)

  • 第一個參數:改變this指向
  • 第二個參數:數組(里面為實參)
  • 使用時候會自動執行函數
function fn(a,b,c){
        console.log(this,a+b+c); 
    }
    fn();
    fn.apply(document,[1,2,3]); 

bind(無數個參數)

  • 第一個參數:改變this指向
  • 第二個參數之后:實參
  • 返回值為一個新的函數
  • 使用的時候需要手動調用下返回 的新函數(不會自動執行)
function fn(a,b,c){
    console.log(this,a+b+c); //window
}
let ff = fn.bind('小明',1,2,3); //手動調用一下

call、apply與bind區別:前兩個可以自動執行,bind不會自動執行,需要手動調用

call、bind與apply區別:前兩個都有無數個參數,apply只有兩個參數,而且第二個參數為數組

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM