JS中Call()和Apply()方法总结

起因:

  1. 一直是面试中经常会提到的问题
  2. 知道会用,但总讲不清,借此机会总结记录一下。

概念:

  1. call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。
  2. apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
  3. 两者用途都是在特定的作用域中调用函数,等于重新设置了函数体内this对象的值,以扩充函数赖以运行的作用域。
  4. 每一个Function对象都有一个apply()方法和一个call()方法

相同点:

  1. 两个方法的作用是一样的
  2. 两个方法的第一个参数的作用是一样的

不同点:

  1. call方法可以接收多个参数
  2. Apply方法只能接收2各参数,所以其第二个参数往往是作为数组形式传入

举例:

function add(c,d){
        return this.a + this.b + c + d;
    }

    var s = {a:1, b:2};
    console.log(add.call(s,3,4)); // 1+2+3+4 = 10
    console.log(add.apply(s,[5,6])); // 1+2+5+6 = 14 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值