SOURCE

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])
console 命令行工具 X clear

                    
>
console