将对象解构为函数参数
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.foo
或 obj.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);
const obj = {
foo: 1,
bar: 2
};
let fn = (...obj) => {
console.log(foo, bar); // ReferenceError: foo is not defined
};
fn(obj);
我基本上想直接在函数内部使用对象道具,而不必 obj.foo
或 obj.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);