bind(),call(), apply()方法的區別是什么?
-
共同點:改變this指向,任何調用都不在起作用
-
bind() 改變this的指向,不會調用函數,返回一個新的函數
var o ={a:'abc'}; var fn1 = fn.bind(o);//this指向o 相當o.fn fn1();//
-
call( ) 改變this指向並調用函數---判斷數據類型
var arr = [1,2,4] var str = '1231'; console.log(Object.prototype.toString.call(arr));//返回Array數據類型 console.log(Object.prototype.toString.call(str));返回String數據類型
-
apply() 改變this指向並調用函數,后面的參數是以數組展示
//求一數組中的最大值 var arr = [2,13,30,1,4]; console.log(Math.max.apply(null,arr));//利用apply()可以把數組展開單獨傳參 console.log(Math.max.apply(Math,arr)); //把數組中的元素一行展示 console.log.apply(console,arr);//指向可以是null,主要是為了把數組展開傳給console