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 模块每个月有上千的下载。