reduce 之 mixin实现

语法:

  arr.reduce(callback[, initialValue])

参数:

    callback:执行数组中每个值的函数,包含四个参数

     accumulator:累加器累加回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(如下所示)。

     currentValue:数组中正在处理的元素

     currentIndex:数组中正在处理的当前元素的索引。 如果提供了initialValue,则索引号为0,否则为索引为1。

     array:调用reduce的数组

  initialValue:[可选] 用作第一个调用 callback的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

function mixin(...objs){
    return objs.reduce((dest, src) => {
        for (var key in src) {
            dest[key] = src[key]
        }
        return dest;    
    });
}

var dest = mixin({...}, src1, src2, src3);

在许多框架中,都有 mixin 的类似实现, jQuery 的 extend、YUI 有好几个类似 mixin 的 API,lodash 中有 _.mixin 方法,npm 中的 mixin 模块每个月有上千的下载。

posted @ 2017-10-18 09:25  【云】风过无痕  阅读(131)  评论(0编辑  收藏  举报