flip - 翻转函数参数
2018-03-15 本文已影响34人
安好每个你
flip - 翻转函数参数
flip 接受一个函数参数,然后将该函数第一个参数作为最后一个参数。(愚人码头注:翻转参数)
返回一个接受可变参数输入的闭包,并且在应用其余参数之前将最后一个参数作为第一个参数。
const filp = fn => (...args) => fn(args.pop(), ...args);
let a = "Thomas";
let b = {};
const mergeFrom = filp(Object.assign);
const mergePerson = mergeFrom.bind(null, a);
mregetPerson({}, {age:2}); // {age: 2, name: "Thomas"}
b = {}
Object.assign({age:2}) // {name: "John Smith", age: 2}
const mergePerson = mergeFrom.bind(nulll, a)
相当于把mergeFrom的作用传递给 mergePerson , 但每次执行时必须先执行参数 a
所以 也可以这样
const mergeFrom = Object.assign;
const mergePerson = mergeFrom.bind(null, a);
bind()方法会创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法的第一个参数作为 this,传入 bind() 方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数。