call和apply的辨别

此文章以最简短的体式格局纪录本身对call和apply,迎接斧正毛病,我会实时更新明白,愿望对列位的查阅有协助

起首抛出详细代码,轻易明白

function A(){
  this.say = function(name, age){
    console.log(name, age)
  }
}

function B(){
  this.walk = function(){
    console.log('I am walking')
  }
}

const a_ins = new A()
const b_ins = new B()

// 将a实例中的要领say,借用给b实例。call带若干个参数
a_ins.say.call(b_ins, 'wangkj', 18) // wangkj 12
// 将a实例中的要领say,借用给b实例。apply带一个参数(该参数为数组,顺次带参数)
a_ins.say.apply(b_ins, ['wangkj', 18]) // wangkj 12
雷同:

call和apply都是一个对象实例(A的实例)的要领(say)借用给另一个对象实例(B的实例),如许B(没有say要领)便可以使用到A的要领(say)

差别:

call带若干个参数,
apply带一个参数(该参数为数组,顺次带参数,如[‘wangkj’, 18])

    原文作者:iamwangkj
    原文地址: https://segmentfault.com/a/1190000017942190
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞