javascript中call和apply的方法都可以用来代替一个对象去调用一个方法,将一个函数的上下文变成我们想要的的上下文环境,也就可以说是我们改变函数的执行环境,这两个方法基本的不同就是参数不同。
- call (obj,agr1,arg2.....)
- apply (obj,[arg1,agr2])
其实简单的说就是call是以一个一个参数传参,apply则是传一个数组。
栗子:
比如我们在全局环境中定义一个函数:
function fun1() {
console.log(this);
}
var obj = {c:1};
fun1(); // window
fun1.call(obj); // {c:1} 这个是指向obj,这个就是改变了函数的执行环境
call和apply都可以改变函数的执行环境,只是参数不一样。