具有默认解构值javascript的对象解构

时间:2019-01-10 16:36:50

标签: javascript object ecmascript-6

我正在寻找一种简洁高效的方法来实现以下目标:

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,但我一直在寻找语法上更接近它的东西)

2 个答案:

答案 0 :(得分:2)

您可以使用对象分解。

function changeData( data = {}, overrides = {} ) {
  return { ...overrides, ...data }; 
}

console.log( changeData( { property: 2 }, { property: 9, a: 1, b: 2 }) ) ;

Additional Info

答案 1 :(得分:1)

function fn(data = {property: 2}, overriders = {property: 9}) {
  let { property } = {...data, ...overriders};
  console.log(property); // = 9
}

fn();