/**
* 自定义函数对象的call方法
* @param {*} Fn
* @param {*} obj
* @param {...any} args
*/
// 函数功能:执行fn, 使this指向obj, 并将后面的n个参数传给fn(功能等同于函数对象的call方法)
function call(Fn, obj, ...args){
// 如果obj是undefined/null, this指定为全局对象
if (obj===undefined || obj===null) {
obj = globalThis; // 全局对象
}
// 为obj添加临时的方法,
obj.temp = Fn;
// 调用temp方法
// 通过obj来调用这个方法 ==> 也就会执行temp函数 ==> 此时fn中的this肯定为obj
let result = obj.temp(...args);
// 删除临时方法temp
delete obj.temp
// 返回Fn执行的结果
return result
}
call函数封装实现
发布时间 2023-09-07 17:36:05作者: Trkly