1. 程式人生 > >call,apply,bind,this

call,apply,bind,this

all 都是 urn 函數聲明 return 綁定 his 普通 運行

1.this:js的this總是指向一個對象,具體那個對象是運行時基於函數的執行環境動態綁定的,而非函數聲明時的環境。

     this的指向(除去eavl和with):

      a.作為對象的方法調用 :this指向對象本身

      b.作為普通函數調用(函數自執行,匿名函數) :this指向window對象

      c.構造器調用

      d.apply,call調用。

2.自定義封裝document.getElementById

    var getId = document.getElementById;

    var div = getId("div");//本身期望this指向的是document,但是經此調用函數執行指向window;

  修改:

    document.getElementById = (function(fuc){

      return function(){

        return fuc.apply(document.getElementById,arguments)

      }

    })(document.getElementById)

    var getId = document.getElementById;

    var div = getId("div");//this執行document

3.call,apply

  都是改變this指向,參數不同,第一個都是this指向的對象,第二個參數為參數。apply為數組,call隨便,偏向apply

  當第一個參數為null時。函數體this默認指向宿主對象。瀏覽器中指向window

call,apply,bind,this