Table of Contents

参考: http://www.cnblogs.com/KeenLeung/archive/2012/11/19/2778229.html

三个问题

两个函数的定义

apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.

  Function.apply(obj,args)方法能接收两个参数
  obj:这个对象将代替Function类里this对象
  args:这个是数组,它将作为参数传给Function(args-->arguments)

call:和apply的意思一样,只不过是参数列表不一样.

  Function.call(obj,[param1[,param2[,…[,paramN]]]])
  obj:这个对象将代替Function类里this对象
  params:这个是一个参数列表

例子

<script type="text/javascript">
    /*定义一个人类*/
    function Person(name,age)
    {
        this.name=name;
        this.age=age;
    }
    /*定义一个学生类*/
    function Student(name,age,grade)
    {
        Person.apply(this,arguments);
        this.grade=grade;
    }
    //创建一个学生类
    var student=new Student("qian",21,"一年级");
    //测试
    alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);
    //大家可以看到测试结果name:qian  age:21  grade:一年级
    //学生类里面我没有给name和age属性赋值啊,为什么又存在这两个属性的值呢,这个就是apply的神奇之处.
</script>