Function.prototype.call = function(context) {
context = context || window;
context.fn = this;
var args = Array.prototype.slice.call(arguments, 1);
let result = context.fn(...args);
delete context.fn;
return result;
};
Function.prototype.apply = function(context, args) {
context = context || window;
context.fn = this;
let result = null;
if(!args) {
result = context.fn();
} else {
result = context.fn(...args);
}
delete context.fn;
return result;
};