javascript中apply,call和bind的区别
1个回答
展开全部
apply与call
apply与call功能是一样的,不同的地方在于方法参数
//apply第二个参数是一个数组
func.apply(thisVal, [arg1, arg2, ...]);
//call则从第二个参数开始为参数列表形式
func.call(thisVal, arg1, arg2, ...);
//用一个例子来描述
//Math.max函数可以返回参数中的最大值
var max1 = Math.max(6, 3, 8, 5);
//如果想找出数组中的最大,apply就派上用场了, 因为Math.max不支持传入数组参数
//apply方法可以把数组中的最大值找出
var array = [6, 3, 8, 5];
var max2 = Math.max.apply(null, array);
//call方法与原来的方法比较类似, 只是多了一个thisVal,
//因为max函数里没有用到this,所以这里的thisVal可以传任意值
var max3 = Math.max.call(null, 6, 3, 8, 5);
bind
1. apply与call调用会直接返回函数的执行结果, 而bind则返回一个函数
2. 该函数需求传入参数是原函数参数减去bind传的参数(不考虑thisVal的话)
//语法
func.bind(thisVal, arg1, arg2, ...);
//示例
function func(a, b, c)
{
console.log(a, b, c);
}
var a=1,b=2,c=3;
var bindFunc = func.bind(null, a);//func没有用到this,所以thisVal可以传null
bindFunc(b, c); //注意这里这需要传b和c就可以了
//Math.max使用bind
var maxFunc = Math.max.bind(null, 6, 3);
var max4 = maxFunc(8, 5);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询