手写call()
Opened this issue · 1 comments
Cosen95 commented
手写call()
Cosen95 commented
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));