• apply & call


    一。意义

    function.apply(obj,args)

    obj代替function里this对象

    args作为参数传给function

    二。实例

    1. obj代替function里this对象

    1     function f(){
    2          alert(this.x + this.y);
    3     }
    4      var obj = {x:1,y:2};
    5      f.call(obj);         //3

    2. API应用

        Math.max(param1,param2,param3…) :实现得到数组中最大的一项

    问题:max不支持数组参数

    解决:根据apply的特点来解决

    var max=Math.max.apply(null,array)

     这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,我只需要用这个方法帮我运算,得到返回的结果就行,

    所以直接传递了一个null过去。undefine是未定义的对象 ,null是定义的对象, 但是没有实例,可以理解为null是defined了的obj。

     

    3. 继承 

     1 /*定义一个人类*/
     2     function Person(name,age)
     3     {
     4         this.name=name;
     5         this.age=age;
     6     }
     7     /*定义一个学生类*/
     8     functionStudent(name,age,grade)
     9     {
    10         Person.apply(this,arguments);
    11         this.grade=grade;
    12     }
    13     //创建一个学生类
    14     var student=new Student("qian",21,"一年级");
    15     //测试
    16     alert("name:"+student.name+"
    "+"age:"+student.age+"
    "+"grade:"+student.grade);
    17     //大家可以看到测试结果name:qian  age:21  grade:一年级
    18     //学生类里面我没有给name和age属性赋值啊,为什么又存在这两个属性的值呢,这个就是apply的神奇之处.
  • 相关阅读:
    MySQL (下篇)
    【JUC剖析】专栏总集篇
    CF1391D(思维)
    CF1393E2(字符串)
    洛谷P5405 [CTS2019]氪金手游(期望,容斥)
    P5293 [HNOI2019]白兔之舞(单位根反演)
    洛谷P5400 [CTS2019]随机立方体(计数)
    洛谷P5401 [CTS2019]珍珠(生成函数)
    支配树学习笔记
    UOJ455 雪灾与外卖(模拟费用流)
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3840335.html
Copyright © 2020-2023  润新知