将对象解构为函数参数

Destructing object as function args

const obj = {
    foo: 1,
    bar: 2
};

let fn = (...obj) => {
    console.log(foo, bar); // ReferenceError: foo is not defined
};

fn(obj);

我基本上想直接在函数内部使用对象道具,而不必 obj.fooobj.bar

编辑添加:我知道我可以手动定义 args ({ foo, bar }),但我不想这样做,因为该对象预计具有未知/可变数量的属性。

对象的解构不同于数组:

const obj = {
    foo: 1,
    bar: 2
};

let fn = ({ foo, bar }) => {
    console.log(foo, bar); // ReferenceError: foo is not defined
};

fn(obj);


如果你只是想遍历属性,你也可以对值使用解构:

const obj = {
    foo: 1,
    bar: 2
};

let fn = (values) => {
    console.log(...values); // ReferenceError: foo is not defined
};

fn(Object.values(obj));

这有帮助吗?

我假设您正在寻找您确实知道的一些属性。 但想保留其他人?

const obj = {
    foo: 1,
    bar: 2,
    unknown: 3,
    unknow: 4,
};

let fn = ({ foo, bar, ...other}) => {
    console.log(foo, bar); 
    console.log(other);
};

fn(obj);