手写 apply 和 call

apply

Function.prototype.myApply = function (context, arr) {
  const obj = context || window;
  obj.fn = this;
  let result;
  if (arr.length !== 0) {
    result = obj.fn(...arr);
  } else {
    result = obj.fn();
  }
  delete obj.fn;
  return result;
}

call

Function.prototype.myCall = function (context, ...arr) {
  const obj = context || window;
  obj.fn = this;
  let result;
  if (arr.length !== 0) {
    result = obj.fn(...arr);
  } else {
    result = obj.fn();
  }
  delete obj.fn;
  return result;
}