Skip to content

模拟实现 call

  • call
js
export default function myCall(context, ...args) {
  context = context ? Object(context) : window
  let fn = Symbol()
  context[fn] = this
  const result = context[fn](...args)
  delete context[fn]
  return result
}
  • apply
js
export default function myApply(context, arr) {
  context = context ? Object(context) : window
  const fn = Symbol()
  context[fn] = this
  let result
  if (!arr) {
    result = context[fn]()
  } else {
    result = context[fn](...arr)
  }
  return result
}