手写call
Function.prototype.newCall=function(obj){
let obj=obj||window
obj.fn=this
let newArguments=[]
for(let i=1;i<arguments.length;i++){
newArguments.push('arguments['+i+']')
}
let result=eval('obj.fn('+newArguments+')')
delete obj.fn
return result
}
手写apply
Function.prototype.newApply=function(obj,arr){
let obj=obj||window
obj.fn=this
if(!arr){
return obj.fn()
}
let result=eval('obj.fn('+newArguments+')')
delete obj.fn
return result
}