JS中apply、call、bind方法

在JS中,函数也是对象,因此也可以具有属性和方法。

在JavaScript中,callapplybindFunction对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向。

callapplybind方法的共同点和区别:
apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后续参数传参;

bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

call()方法和apply()方法的作用相同,区别仅在于接受参数的方式不同。


apply()方法接收两个参数,第一个是在其中运行函数的作用域,第二是是参数数组,可以是Array的实例,也可以是arguments对象。

1、apply():

function sum(num1,num2){
    return num1+num2;
}
function callsum1(num1,num2){
    return sum.apply(this,arguments);      //传入arguments对象
}
function callsum2(num1,num2){
    return sum.apply(this,[num1,num2]);    //传入数组
}

alert(callsum1(10,10));
alert(callsum2(10,10));

2、call():

传递给函数的参数必须逐个列举出来:

function sum(num1,num2){
    return num1+num2;
}
function callsum1(num1,num2){
    return sum.call(this,num1,num2);      
}
alert(callsum1(10,10));  //20

3、bind()方法:

bind会创建一个函数的实例,bind除了返回是函数以外,它的参数和call一样

    sum.bind(this,num1,num2)();

最后面的()表示函数执行。

猜你喜欢

转载自blog.csdn.net/weixin_40929761/article/details/80554737