Function.prototype.call = function () {
var obj = arguments[0] || window;
var arr = [];
obj.fn = this;
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
arr.push('arguments[' + i + ']');
}
arr = arr.join(',');
console.log(arr);
var result = eval('obj.fn(' + arr + ')')
} else {
var result = obj.fn();
console.log(1);
}
delete obj.fn;
return result;
}
Function.prototype.apply = function(obj, arr){
var result;
obj.fn = this;
if(arr){
var newArr = [];
for(var i = 0; i < arr.length; i++){
newArr.push('arr[' + i +']');
}
newArr = newArr.join(',');
result = eval('obj.fn('+ newArr +')')
}else{
result = obj.fn();
}
delete obj.fn;
return result;
}
function test(arr,str){
console.log(arr);
console.log(str);
}
test.apply(window, [12,23]);
test.call(window, 12,23);