Array.prototype.myreduce = function(callback,initialValue){
let arr = Array.prototype.slice.call(this)
let res = initialValue?initialValue:arr[0]
let startIndex = initialValue?0:1;
for(let i=startIndex;i<arr.length;i++){
res = callback.call(null,res,arr[i],i,this)
}
return res
}
let a = [1,2,3,4]
console.log(a.myreduce((a,b)=>a+b,3))