apply函数的封装实现

发布时间 2023-09-09 16:37:18作者: Trkly
/* 
自定义函数对象的apply方法
*/
export function apply(fn, obj, args) {
  console.log('apply()')

  // 如果obj是undefined/null, this指定为全局对象
  if (obj===undefined || obj===null) {
    // return fn(...args)
    obj = globalThis; // 全局对象
  }

  // 给obj添加一个临时方法, 方法指向的函数就是fn
  obj.tempFn = fn
  // 通过obj来调用这个方法 ==> 也就会执行fn函数 ==> 此时fn中的this肯定为obj
  const result = obj.tempFn(...args)
  // 删除obj上的临时方法
  delete obj.tempFn
  // 返回fn执行的结果
  return result
}