call函数封装实现

/**
 * 自定义函数对象的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

}
posted @   Trkly  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示