此文章以最簡(jiǎn)短的方式記錄自己對(duì)call和apply,歡迎指正錯(cuò)誤枷恕,我會(huì)及時(shí)更新理解征字,希望對(duì)各位的查閱有幫助
首先拋出具體代碼,方便理解
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實(shí)例中的方法say仁锯,借用給b實(shí)例。call帶若干個(gè)參數(shù)
a_ins.say.call(b_ins, 'wangkj', 18) // wangkj 12
// 將a實(shí)例中的方法say翔悠,借用給b實(shí)例业崖。apply帶一個(gè)參數(shù)(該參數(shù)為數(shù)組,依次帶參數(shù))
a_ins.say.apply(b_ins, ['wangkj', 18]) // wangkj 12
相同:
call和apply都是一個(gè)對(duì)象實(shí)例(A的實(shí)例)的方法(say)借用給另一個(gè)對(duì)象實(shí)例(B的實(shí)例)蓄愁,這樣B(沒有say方法)就可以使用到A的方法(say)
不同:
call帶若干個(gè)參數(shù)双炕,
apply帶一個(gè)參數(shù)(該參數(shù)為數(shù)組,依次帶參數(shù)撮抓,如['wangkj', 18])