2019-03-26
描述
使用函数作为参数,然后将该函数的第一个参数作为最后一个参数。
提示
- 使用扩展运算符接受第二个及以后的参数
- 返回一个接受可变参数的闭包函数,并交换输入参数的位置
代码
const flip = fn => (first, ...rest) => fn(...rest, first);
示例
对象合并:
let a = { name: 'John Smith' };
let b = {};
const mergeFrom = flip(Object.assign);
let mergePerson = mergeFrom.bind(null, a);
mergePerson(b); // {name: "John Smith"} === b
b = {};
Object.assign(b, a); // {name: "John Smith"} === b