JS中的call()和apply()方法

一、方法定义

1、call()

语法:call(thisObj, Object)
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

2、apply()

语法:apply(thisObj, [argArray])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

二、常用实例

1、function add(a,b){  
           alert(a+b);  
    }  
    function sub(a,b){  
        alert(a-b);  
    }  
    add.call(sub,3,1);//4

2、var func=new function(){
          this.a="func"
    }
    var myfunc=function(x){
        var a="myfunc";
        alert(this.a);
        alert(x);
    }
    myfunc.call(func,"var");//func var    开始this指向myfunc,用call()方法后,this指向func

3、<input type="text" id="myText" value="input text">

function Obj(){
        this.value="对象!";
    }
    var value="global 变量";
    function Fun1(){
        alert(this.value);
    }

    window.Fun1(); //global 变量   等价于Fun1(); this指向window
    Fun1.call(window); //global 变量
    Fun1.call(document.getElementById('myText')); //input text
    Fun1.call(new Obj()); //对象!

4、 function Animal(){    
        this.name = "Animal";    
        this.showName = function(){    
            alert(this.name);    
        }    
      }   
      function Cat(){    
         this.name = "Cat";    
      }      
      var animal = new Animal();    
      var cat = new Cat();    
      //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。    
      //输入结果为"Cat"    
      animal.showName.call(cat,",");    
     //animal.showName.apply(cat,[]);

 

posted on 2017-09-21 16:54  平平淡淡summer  阅读(754)  评论(0编辑  收藏  举报

导航