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