call 和apply 的区别

  在JavaScript 中,call 和apply 都可以用来改变上下文「context」;也就是我们常说的this。英文水平不差的,可以直接看stackoverflow 的高票回答。

  call 和apply 的不同之处仅仅在于arguments 的处理方式:apply 用的是数组,而call 需要用逗号明确的列出传入的参数。

function log(prefix, content) {
    console.log(prefix, content);
}

log.apply(undefined, ['测试', 'apply']);
log.call(undefined, '测试', 'call');

  在ES6 之后,由于新增了展开语法「Spread syntax」,所以我觉得现在它们两者可以说是没有区别了。

function log(prefix, content) {
    console.log(prefix, content);
}

const args4apply = ['测试', 'apply'];
const args4call = ['测试', 'call']
log.apply(undefined, ['测试', 'apply']);
log.call(undefined, ...args4call);

参考

您的浏览器已过时

要正常浏览本网站请升级您的浏览器。现在升级

×