/**
* 手写call方法
* 1、定义mycall方法
* 2、设置this并调用原函数
* 3、接受剩余参数并返回结果
*/
Function.prototype.myCall = function(thisArg,...arg){
// thisArg为传入的设置为this的对象
// this原函数(原函数.myCall)
// 使用Symbol确保函数名的唯一性,防止与传入的值重名
const key = Symbol('key')
thisArg[key] = this
const res = thisArg[key](...arg)
delete thisArg[key]
return res
}
// 示例
const person = {
name:'call手写'
}
function func(numA,numB){
return numA + numB
}
const res = func.myCall(person,6,7)