js中call和apply的区别和使用方法

今天做了一个相关的小题儿,没想到还做错了,分享一下子 :

以下对call() 和 apply() 说法哪些是正确的  ()

1.apply()函数有两个参数:第一个参数是上下文,第二个参数是参数组成的数组;
2.如果第一个参数是null,则使用全局对象代替;
3.call和apply的意思一样,只不过是参数列表不一样.
4.通过apply可以将数组装换为参数列表的集合

答案:all right (1 2 3 4)

分析一下子---------------

相同点:

都可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由this指定的新对象。

不同点:

apply:最多只能有两个参数——B.apply(A, [1,2,3])。    A调用B对象的方法

call:它可以接受多个参数,B.apply(A ,1,2,3)。  A调用B对象的方法

实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。

来点代码。更直观一些:

1、基本常用的方法

function add(a,b){
  return a+b;  
}
function sub(a,b){
  return a-b;  
}
var result1 = add.apply(sub,[1,2]);   sub方法里实际调用的是add方法里的逻辑
var result2 = sub.apply(add,[1,2]);
console.log(result1);  //3     
console.log(result2);  //-1



2、用来继承

function Student(name){
  this.name = name;
  this.showName = function(){
        console.log(this.name);    
    }    
}

function Teacher(name){
  Student.apply(this,[name]);    
}

var PDD = new Teacher("马老师");
PDD.showName(); //马老师

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值