js中Function對象--call、apply和bind

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章