实现call和apply方法

一道经典的面试题:如何实现call和apply方法。实现方法如下:
// 自定义call的实现
Function.prototype.customCall = function(thisArg, ...args) {
  const thisObject = Object(thisArg);
  const symbol = Symbol('func');

  thisObject[symbol] = this;

  const result = thisObject[symbol](...args);

  delete thisObject[symbol];

  return result;
};

// 自定义apply的实现
Function.prototype.customApply = function(thisArg, args = []) {
  const thisObject = Object(thisArg);
  const symbol = Symbol('func');

  thisObject[symbol] = this;

  const result = thisObject[symbol](...args);

  delete thisObject[symbol];

  return result;
};