js的call和apply区别

it2022-05-09  29

call和apply都是改变了this的指针。

obj.call(newObj, arg1, arg2, ...); obj.apply(newObj, [arg1, arg2, ...]);

上面的都是把obj的this指向了newObj,这时newObj就继承了obj的属性和方法。

两者区别是接收的参数不同,第一个参数都是函数运行的作用域(this),

apply第二个参数接受的是数组参数,如果没有提供argArray和newObj任何一个参数,那么Global对象将用作newObj。

call接受的是连续参数,如果没有提供newObj参数,那么Global对象被用于newObj。

如下面的例子

function add(j, k) { console.log(j + k); } function sub(j, k) { console.log(j - k); } add(2, 1); //3 add.call(sub, 2, 1); //3 add.apply(sub, [2, 1]); //3 sub(2, 1); //1 sub.call(add, 2, 1); //1 sub.apply(add, [2, 1]); //1

转载于:https://www.cnblogs.com/huzhuhua/p/10345758.html


最新回复(0)