此文章以最简短的体式格局纪录本身对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])