js 改變this指向

js 改變this指向

  • js 改變this 指向
  • js中改變this指向的三個方法
  • 1.call(this指向,實參1,實參2)
    實參可以有無數個,中間用逗號隔開
  • 2.apply(this指向,[實參1,實參2])
    參數有兩個,一個爲this指向,一個爲類數組
  • 3.bind(this指向,實參)(實參)
    bind()的實參可以隨意放置

區別:
call()和apply()在改變完this的指向後會自動調用函數
bind()在改變完this的指向後不會自動調用函數,需要手動調用 bind()的第二個()可以調用函數

<script>
    //修改this指向 
    //修改this指向有3個方法  call()、apply()、bind()
    //1.call()  call(this指向,實參1,實參2) call() 實參可以有無數個,中間用逗號隔開,實參可以沒有
    //2.apply()  apply(this指向,[實參1,實參2]) apply() 只有兩個參數,一個是要修改的this指向,一個是類數組
    //3.bind()  bind(this指向,實參)(實參)  實參可以隨意放置

    //call()和apply()在改變完this指向後會立即自動調用一次函數
    //bind() 在改變完this指向後不會自動調用函數,而是需要手動調用

    //call()
    function foo(){
        console.log(this)//document
    }
    foo.call(document);

    //apply()
    function foo1(a1,a2){
        console.log(this);//document
        console.log(a1);//1
        console.log(a2);//2
    }
    foo1.apply(document,[1,2])

    //bind()
    //bind()的第二個括號可以調用函數
    function foo2(a1,a2){
      console.log(this);//document
      console.log(a1);//1
      console.log(a2);//2
    }
    foo2.bind(document,1,2)();

    //例子: 修改計時器中的this指向
    //這個例子,只能用bind()實現,其他兩個方法是實現不了的,因爲只有bind是手動調用的。其他兩個方法自動調用,就做不了延遲的效果
    setInterval(function(){
      console.log(this)
    }.bind(document),3000)
    </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章