关于JavaScript中apply与call的用法意义及区别(转)

call 方法

调用一个对象的一个方法,以另一个对象替换当前对象。

说明

call 方法可以用来代替另一个对象调用一个方法。

说明白一点其实就是改变对象的this指向的内容。

例如

<input type="text" id="myText"   value="input text">
<script>
    function Obj(){this.value="对象!";}
    var value="global 变量";
    function Fun1(){alert(this.value);}

    window.Fun1();   //global 变量
    Fun1.call(window);  //global 变量
    Fun1.call(document.getElementById('myText'));  //input text
    Fun1.call(new Obj());   //对象!
</script>

调用call之后,Fun1函数中的this是call(代替this的对象)

对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
对于第一个参数意义都一样,但对第二个参数:
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])

同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入

猜你喜欢

转载自blog.csdn.net/weixin_39703170/article/details/80092479