• call与apply


    众所周知,每个函数都包含两个非继承而来的方法:apply()与call() 方法,他们都可以接收参数,他们的作用都是一样的,都是在特定的作用域里面调用函数,相当于设置函数体内的this对象的值,这也是他们的强大之处,就在于可以扩充函数运行的作用域,下面 就用代码来说明他们的作用,来看两个demo:

    demo1:     

           window.name = "Jack";
          var person = {
            name:"Tom"
          }
          function who(){
            console.log(this.name);
          }
          who();        //Jack
          person.who = who;
          person.who();     //Tom

    demo2:  

          window.name = "Jack";
          var person = {
            name:"Tom"
          }
          function who(){
            console.log(this.name);
          }
          who(); //Jack
          who.call(this) //this指向全局 Jack
          who.call(window) //Jack
          who.call(person) //Tom

    从两个demo对比来看 ,此时call(apply)的用法就是扩充作用域;

    call与apply区别:

        call与apply的唯一的不同点就是传参问题了,apply可以接受两个参数,第一个参数指向作用域对象(this),第二个参数可以接收参数数组,也可以是arguments对象;call方法,第一个参数相同,第二个参数后面明确接收每一个参数,例如call(this,person1,person2...)

  • 相关阅读:
    1349:【例4-10】最优布线问题
    1348:【例4-9】城市公交网建设问题
    P2024 [NOI2001]食物链
    $P2573 [SCOI2012]滑雪$
    $P1991 无线通讯网$
    $P2872 [USACO07DEC]道路建设Building Roads$
    $P1547 Out of Hay$
    hdu 3468 Treasure Hunting
    hungary HK 多重匹配
    Hdu匹配题集
  • 原文地址:https://www.cnblogs.com/moying/p/Avrilscript.html
Copyright © 2020-2023  润新知