网上搜索call和apply的使用方法,大多数时候总是把这两个方法搞混,所以我尝试用一些取巧的方式去记忆。
call和apply的共同点:
- 第一个参数传入的是执行上下文的对象,也就是改变方法的this指向到这个参数。
- 都会执行函数
以上都不理解?没事,看代码
function getName() {
console.log(this.name)
}
getName(); // undefined
getName.call({name: 'qp'}); // qp
getName.apply({name: 'qp'}); // qp
call和apply的不同点:
- call方法后面的参数是一个列表,而apply方法第二个参数是array(数组)
如果容易记混的话,就看apply和array长得特别像,就不会搞错了。
看代码
function getName(...param) {
console.log(param)
}
getName(); // undefined
getName.call({}, 'qp', 'qp'); // ['qp', 'qp']
getName.apply({}, ['qp', 'qp']); // ['qp', 'qp']
网上搜索call和apply的使用方法,大多数时候总是把这两个方法搞混,所以我尝试用一些取巧的方式去记忆。
call和apply的共同点:
以上都不理解?没事,看代码
call和apply的不同点:
如果容易记混的话,就看apply和array长得特别像,就不会搞错了。
看代码