Function對象–call、apply和bind
這三個對象的作用是更改函數內的this的指向
例如:
function f1(a,b){
console.log(a + b);
}
f1(1,2); //3
f1.call(null,1,2); //3
f1.apply(null,[1,2]);//3
function f2(a,b){
console.log(a + b);
}·
f2.call(obj,1,2);
//這個時候裏面的this的指向已經不是window了已經換爲了obj
然而call和apply的區別就是apply必須放在數組內。
如果函數沒形參的話call和apply的第可以不傳參,this默認爲window如果傳null的話也是默認爲window;
如果有參數的話則第一個必須傳參數而且必須是一個對象或者傳null,否則會報錯或者出現NAN
call和apply的實際作用是什麼呢?
1.方法借用
2.js中繼承
1.)方法借用
//求最大數
Math.max(1,2,3,55,77)//77
Math.max([1,2,3,55,77])//報錯
Math.max.apply(null,[1,2,3,55,77]);//77
//等同於
var arr = [1,2,3,55,77];
Math.max.apply(null,arr);//77
//2.把僞數組轉化爲數組
var wsz = {0,"123",1,"asd",2,"123",length:3};
var arr = [].slice.call(wsz);