Function.prototype.myApply = function (arg) {
const self = arg || window;
const args = arguments[1];
self.fn = this;
if (args === void 0) {
return self.fn();
}
const exec = 'arg.fn(' + args.join(',') + ')';
const res = eval(exec);
delete self.fn;
return res;
};
const rose = {
name: 'rose',
greet: function (age) {
console.log(`Hello, I am ${this.name}, ${age} year old`)
}
};
const jack = {
name: 'jack'
}
rose.greet(24);
rose.greet.myApply(jack, [26]);