码迷,mamicode.com
首页 > 移动开发 > 详细

call() 和 apply() -this的情况

时间:2021-05-23 23:39:03      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:this   alert   cti   name   统一   func   参数   数组   apply()   

  function fun(a,b){
        console.log("a = "+ a);
        console.log("b = "+ b);
        alert(this);
      }

      var obj= {
        name:"obj",
        sayName:function(){
          alert(this.name);
        }
      };
 
      /**
       *  call() 和 apply()
       *  -这两个方法都是函数对象的方法 需要通过函数对象来调用
       *  -当对函数调用call() 和 apply() 都会调用函数执行
       *  在调用call() 和 apply() 可以将 一个对象指定为第一个参数 
       *    此时 这个函数将会成为函数执行时的this
       * 
       *  call() 方法可以将实参在对象之后依次传递
       *  apply() 方法需要将实参封装到一个数组中统一传递
       * 
       *  -this的情况
       *    1 以函数形式调用时, this 永远都是window
       *    2 以方法的形式调用时, this 是调用方法的对象
       *    3 以构造函数的方法调用时,this 是新创建的那个对象
       *    4 使用 call 和 apply 调用时,this 是 指定的那个对象
      */

      // fun.call(obj,2,3)
      fun.apply(obj,[2,3])
    
      var obj2= {name:"obj2"}; 

      //fun()  // [object Window]
      //  fun.call(); // [object Object]
      //  fun.apply(); //[object Window]

      //fun.call(obj); //[object Object]
      //fun.apply(obj2);  //[object Object]

      // obj.sayName.apply(obj2); 

call() 和 apply() -this的情况

标签:this   alert   cti   name   统一   func   参数   数组   apply()   

原文地址:https://www.cnblogs.com/eric-share/p/14728545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!