call与apply

2018-06-24 01:52:05来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

众所周知,每个函数都包含两个非继承而来的方法: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...)

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:小刘同学的第一百零六篇博文

下一篇:原生Ajax用法——一个简单的实例