apply 和 call 的相同点是:
- 都由一个函数调用
- 第一个参数都是原函数的执行环境 this
不同点是:
apply 的第二个参数接收原函数的所有参数,而 call 从第二个参数开始跟原函数一样是打散的
代码如下:
1 | F(arg1, arg2, ...){} |
需要特别注意的是,如果是在非严格模式下,thisArg 如果为 null 或 undefined,就会被替换成全局对象(在浏览器中是 window);如果为原始值,就会被替换成原始值的的自动包装对象。
严格模式下,thisArg 传什么就是什么。