编辑代码

Array.prototype.myReduce = function (fn, initalValue) {
    //将类数组转化为数组
    var arr = Array.prototype.slice.call(this);
    // 设置结果值,初始值,
    var res, startIndex;
    //最终结果初始值,如果有initialValue,就设置,没有就取数组的数组第一个值
    res = initialValue ? initialValue : arr[0];
    //初始值如果initalValue存在就为0,不存在就从1开始
    startIndex = initalValue ? 0 : 1;
    //如果有初始值,就从0开始遍历
    for (var i = startIndex; i < arr.length; i++) {
        res.fn.call(null, res, arr[i], i, this)
    }
    return res;
}
var arr = [1, 2, 3, 4];
var newArr = arr.reduce((pre, cur) => {
    return pre + cur
}, 5);
console.log(newArr);