call和apply的区分

6次阅读

共计 520 个字符,预计需要花费 2 分钟才能阅读完成。

此文章以最简短的方式记录自己对 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])

正文完
 0