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

call和apply的区别及用法

时间:2019-10-18 00:02:27      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:type   style   app   对象   class   col   call   fun   rip   

ECAMScript3给Function的原型定义了两个方法,Function.prototype.call 和Function.prototype.apply。

区别仅在于传入的参数形式不同。

var func=function(a,b,c){
      console.log([a,b,c]);
}
func.apply(null,[1,2,3]);//输出[1,2,3]
func.call(null,1,2,3);//输出[1,2,3]

用法:

1、改变this指向。call和apply最常见的用途是改变函数内部的this指向。

var name="window"
var obj1={
    name:"obj1"
};
var ob2={
    name:"obj2"
};
var getName=function(){
    console.log(this.name);
}
getName();//window
getName.call(obj1);//obj1   this指向obj1
getName.call(obj2);//obj2   this指向obj2

2、借用其他对象的方法

var A={
    name:"小王",
    getName:function(){
        console.log(this.name);
    }
};
var B={
    name:"丽丽"
};

A.getName.call(B);

 

call和apply的区别及用法

标签:type   style   app   对象   class   col   call   fun   rip   

原文地址:https://www.cnblogs.com/liangtao999/p/11688976.html

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