Call 和 Apply 的区别是什么?

收藏
Javascript基础语法
10
Feb 8, 2018

在使用Call和Apply时,总是不知道它们如何区别使用。

回答

云松回答

问题分析:

在使用Call呵呵Apply的时候,首相我们要知道它们是用来作用什么的,什么地方可以使用。在此基础之上,我们在去使用这两个方法,就不会迷糊。

解决办法:

定义: call 和 apply 可以让我们手动设置 this 指向
两个参数: 第一个参数是 绑定 this 指向;第二个参数是 向将要执行的函数传递的参数
区别: 第二个参数, call 以一个一个的形式传递参数;apply 以数组的形式传递参数

由以上三个内容,我们知道两个方法都是自定义this指向,不同之处是传递参数时,形式有所不同。

语法:

function.call(thisObj [, arg1[, arg2[, [, ...argN]]]]);
function.apply(thisObj [, argArray] );

使用示例:

var a = 10;
function sum(num1, num2) {
    console.log(this.a + num1 + num2);
}
var obj = {
    a: 20
}

sum(10, 10);    //30
sum.call(obj, 10, 10);       // 40
sum.apply(obj, [10, 10]);    // 40

通过该案例我们可以知道,第一次调用sum时,this.a中的this指向window。

第二次使用call调用时,把this指向,重新指定为obj,那么this.a就是obj对象中属性a。

第三次使用apply时,执行过程和第二次一样,不同之处就是传递参数使用数组的形式,方便传递大量数据。

(0)

提交成功