1. 程式人生 > >this指向問題(call、apply、blind),自我理解的

this指向問題(call、apply、blind),自我理解的

div ply bind code 方法 spa null 能夠 第一個

在創建函數的時候,函數自身有一些屬性和方法 其中有 apply、call、bind方法,這些方法都是能夠改變this指向的 call:有無數的參數 第一個參數: 能夠改變this指向,基本上是寫啥是啥(null,undefined,設置了還是window) 從第二個參數以後,就是實參(有幾個形參就對應幾個實參);
function
fn(a,b,c,d){ console.log(this); console.log(a+b+c+d); }
fn.call(document,1,2,3,4);//改變this指向,有無數個參數
 

apply:只有2個參數 第一個參數: 能夠改變this指向,基本上是寫啥是啥(null,undefined,設置了還是window) 第二個參數:(數組內放置的就是實參) 數組[]
function
fn(a,b,c,d){ console.log(this); console.log(a+b+c+d); }
fn.apply(document,[1,2,3,4]);//改變this指向,第二個參數是數組
 

上面2個方法,都是使用之後自動執行函數。 bind,調用了bind方法不是直接執行函數,返回值就為新的函數(一般是改變this之後的函數) 若幹參數: 第一個參數: 能夠改變this指向,基本上是寫啥是啥(null,undefined,設置了還是window),從第二個參數以後,就是實參(有幾個形參就對應幾個實參)
function
fn(a,b,c,d){ console.log(this); console.log(a+b+c+d); }
let f = fn.bind(document); f(1,2,3,4);//改變了this指向,並且需要重新調用函數。


this指向問題(call、apply、blind),自我理解的