Я ищу краткий и эффективный способ достижения следующего:
Независимо от того, существует ли свойство в data
или нет, переопределите его, если оно существует в overriders
fn(data = {}, overriders = {}) {
data = {property: 2};
let { property = data.property } = overriders;
console.log(property); // = 2
}
Это работает, и это вполне нормально
Есть ли способ лучше? Я надеялся на что-то вроде этого:
fn(data = {}, overriders = {}) {
data = {property: 2};
overriders = {property: 9}
let { property } = data || overriders;
console.log(property); // = 9
}
(Я знаю, что это похоже на fallback
но я искал что-то близкое к нему синтаксически)
function fn(data = {property: 2}, overriders = {property: 9}) {
let { property } = {...data, ...overriders};
console.log(property); // = 9
}
fn();
Вы можете использовать деструктуризацию объекта.
function changeData( data = {}, overrides = {} ) {
return { ...overrides, ...data };
}
console.log( changeData( { property: 2 }, { property: 9, a: 1, b: 2 }) ) ;
Object.assign
?