call和apply

先看段代码:

function Introduce(name,age)
{
    document.write("My name is "+name+".I am "+age);
}

var p=new People();
Introduce.call(p,"Windking",20);

用了call之后,Introduce就成了p的方法,不知道这样说你明白了么?使用了call方法,上述的代码就等同于了这个代码:

function People(name,age)
{
    this.name=name;

    this.age=age;

    this.Introduce=function(){

    document.write("My name is "+name+".I am "+age);
  };
}

语法:

call:  call接受少一个参数,call的第一个参数是指你所需要的对象,比如上例,introduce方法希望被对象p调用,那么就将p作为call方法的第一个参数;剩余的参数个数是任意的,作用是作为introduce方法的参数。顺序是按照introduce参数声明的顺序。注:传入的参数的顺序要与函数声明的时的参数顺序一致。

apply: 作用和call方法一致,区别是:call接受至少一个参数,apply只接受两个参数,第一个参数与call一样,第二个参数是一个带下标的集合,比如introduce.call(p,"Windking",20)可以改写成introduce.apply(p,["Windking",20])

参考http://www.cnblogs.com/kym/archive/2009/01/23/1380215.html

posted on 2014-01-03 17:40  简单,快乐  阅读(136)  评论(0编辑  收藏  举报