apply與call方法
apply與call可以改變函式內部this的指向
apply是函式物件本身身上的方法,可直接用
call也可以呼叫函式
例
function sum (a, b, c, d){ console.lo(a+b+c+d); console.log(this === obj) } var obj = { name: "xiaoming", age: 18, sex: "男" } sum(1,2,3,4);
毫無疑問,thid===obj肯定是false,因為呼叫函式sum是window,所以this是window,不等於obj
但是如果這樣子呼叫sum.call(obj,1,2,3,4);
this就是指向obj
為什麼要用call呢?
因為它的引數除了接收實際引數外,還可以接收一個引數代表this
它的第一個引數就是你希望函式裡面的this是誰,後面的才是實參
而apply的基本功能和call基本功能是一樣的,區別在於傳遞引數的語法不一樣
實參是需要拿陣列包住
sum.apply(obj,[1,2,3,4]);