call, apply的用法意义以及区别是什么

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

他们的写法不同,如下:

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

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

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

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

 1 <input type="text" id="myText" value="input text"/>
 2 <script>
 3     function obj(){
 4         this.value = '对象';
 5     }
 6     var value = 'global对象';
 7     function fun1(){
 8         console.log(this.value);
 9     }
10     //看看以下结果是啥?
11     window.fun1(); //global对象
12     fun1.call(window); // global对象
13     fun1.call(document.getElementById('myText')); // input text
14     fun1.call(new obj()); //对象
15     
16 </script>
原文地址:https://www.cnblogs.com/xiayu25/p/6265134.html