this指向問題(call、apply、blind),自我理解的
阿新 • • 發佈:2018-11-02
div ply bind code 方法 spa null 能夠 第一個 在創建函數的時候,函數自身有一些屬性和方法
其中有
apply、call、bind方法,這些方法都是能夠改變this指向的
call:有無數的參數
第一個參數:
能夠改變this指向,基本上是寫啥是啥(null,undefined,設置了還是window)
從第二個參數以後,就是實參(有幾個形參就對應幾個實參);
functionfn.call(document,1,2,3,4);//改變this指向,有無數個參數fn(a,b,c,d){ console.log(this); console.log(a+b+c+d); }
apply:只有2個參數 第一個參數: 能夠改變this指向,基本上是寫啥是啥(null,undefined,設置了還是window) 第二個參數:(數組內放置的就是實參) 數組[]
functionfn.apply(document,[1,2,3,4]);//改變this指向,第二個參數是數組fn(a,b,c,d){ console.log(this); console.log(a+b+c+d); }
上面2個方法,都是使用之後自動執行函數。 bind,調用了bind方法不是直接執行函數,返回值就為新的函數(一般是改變this之後的函數) 若幹參數: 第一個參數: 能夠改變this指向,基本上是寫啥是啥(null,undefined,設置了還是window),從第二個參數以後,就是實參(有幾個形參就對應幾個實參)
functionlet f = fn.bind(document); f(1,2,3,4);//改變了this指向,並且需要重新調用函數。fn(a,b,c,d){ console.log(this); console.log(a+b+c+d); }
this指向問題(call、apply、blind),自我理解的