<script>
// <!-- 实现mycall方法, 功能和调用形式与call一致 -->
// 原型定义一个mycall方法, 大家都能调用
Function.prototype.mycall = function (thisArg, ...argN) {
// console.log('mycall方法被调用了');
// 设置this并调用原函数
// 接收剩余参数
// 将动态添加的属性删掉
// 返回结果
thisArg.f = this
const res = thisArg.f(...argN)
delete thisArg.f
return res
}
const person = {
name: 'mandy',
age: 21
}
function fun(numA, numB) {
console.log(this);
console.log(numA, numB);
return numA + numB;
}
const result = fun.mycall(person, 10, 11)
console.log('result:' + result);
const result2 = fun.call(person, 20, 21)
console.log('call - result:' + result2);
</script>
调试结果: