Open Cosen95 opened 4 years ago
Function.prototype.call2 = function (context) { var context = context || window; context.fn = this; var args = []; for (var i = 1, len = arguments.length; i < len; i++) { args.push("arguments[" + i + "]"); } var result = eval("context.fn(" + args + ")"); delete context.fn; return result; }; var value = 2; var obj = { value: 1, }; function bar(name, age) { console.log(this.value, window); return { value: this.value, name: name, age: age, }; } bar.call(null); // 2 console.log(bar.call2(obj, "kevin", 18));