call和apply没有什么大的区别,两者的作用都是:改变对象的this指向的内容。

他们的写法不同,如下:

func.call(func1, var1, var2, var3);

func.apply(func1, [var1, var2, var3]);

从写法中可以看出,使用apply的好处是,可以把当前函数的arguments对象作为apply的第二个参数传进去。

下面我们拿call来做个例子:

 <input type="text" id="myText" value="input text"/>
<script>
function obj(){
this.value = '对象';
}
var value = 'global对象';
function fun1(){
console.log(this.value);
}
//看看以下结果是啥?
window.fun1(); //global对象
fun1.call(window); // global对象
fun1.call(document.getElementById('myText')); // input text
fun1.call(new obj()); //对象 </script>
04-26 02:18