在使用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)
相似问题