Function.prototype.call = function (context, ...args) {
if (typeof this !== 'function') {
throw new TypeError('Type Error');
}
const fn = Symbol('fn')
context[fn] = this
let result = context[fn](...args)
delete context[fn]
return result
}