将对象的属性应用于函数的参数

wen*_*een 1 javascript ecmascript-6

假设我有一个函数(可能来自第三方库,假设我无法更改其定义),以及一个具有与函数参数匹配或重叠的属性的对象:

function fn(foo, bar, baz) { /* do stuff */ }
var obj = { foo: "yes", bar: 7, baz: false }
Run Code Online (Sandbox Code Playgroud)

有没有办法使用某种解构或扩展赋值或其他一些 ES6 功能来将对象属性应用为函数参数,或者我是否坚持单独指定每个参数?

fn(...obj); // Doesn't work
fn(obj.foo, obj.bar, obj.baz); // Convoluted but works
fn.apply(null, obj.values()); // Might work if you're lucky
Run Code Online (Sandbox Code Playgroud)

tri*_*cot 5

您可以为以下内容创建一个包装函数fn

const myFn = ({foo, bar, baz}) => fn(foo, bar, baz);
Run Code Online (Sandbox Code Playgroud)

然后你的调用就简化为:

myFn(obj);
Run Code Online (Sandbox Code Playgroud)