美文网首页
JavaScript中call与apply的作用

JavaScript中call与apply的作用

作者: lurker | 来源:发表于2016-04-01 16:22 被阅读36次

JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别。

对于JS手册中call的解释是:

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

call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从
初始的上下文改变为由 thisObj 指定的新对象。

有点类似于: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>
   var func=new function(){this.a="aaa"}
    var myfunc=function(x){
        var a="myfunc";
        alert(this.a);
        alert(x);
    }
    myfunc.call(func,"var");

感觉更加倾向于——call和apply的作用就是切换函数的对象上下文。修改内部指针,将函数的作用域发生改变,而不是替换。

相关文章

网友评论

      本文标题:JavaScript中call与apply的作用

      本文链接:https://www.haomeiwen.com/subject/yajylttx.html