js apply 与 call的用法

 

  function Person(age, name) {
        debugger
        this.name = name;
        this.age = age;
        debugger
    }

    function Student(name, age, grade) {
        Person.apply(this, arguments); //this  指当前的student  arguments 就是"qian", 21,
  
        // "一年级"  student继承了 person里面的属性与方法(name,age)     argument 作为参数传给 
        //   persion    
        console.log(arguments);
        debugger
        this.grade = grade;
        debugger
    }

    var student = new Student("qian", 21, "一年级");

    console.log("name:" + student.name + "\n" + "age:" + student.age + "\n" + "grade:" + student.grade);

 

 

    上面代码中的 apply可以替换成call  但是参数也需要修改 需要修改成 Person.apply(this, age,name);   与Person的参数映射

      这里的参数需要和Person的形参形成对应关系

        apply 会自动将 [arrar1,arrar2.....]转化成(arrar1,arrar2.....)  所以上面arguments  可以直接作为参数传进去

     基于这一特性

      可以使用 Math.max.apply(NULL,arrary[]) 获取最大值       注:如果第一个参数为空那么this的指向不会发生改变

  另外参考一下   

https://www.jianshu.com/p/80ea0d1c04f8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值