var foo={
value:1
}
function bar(a){
console.log(a)
console.log(this.value)
return a;
}
Function.prototype.apply2 =function(context,arr){
var context = context||window,result;
context.fn = this;
if(!arr){
result = context.fn();
}else{
var args = []
for(var i = 0;i< arr.length;i++){
args.push('arr['+i+']');
}
result = eval('context.fn('+args+")")
}
delete context.fn;
return result;
}
bar.apply2(foo,[4,4,5])