ES6,参数解构与默认值。写得少的方法

时间:2018-03-06 19:07:21

标签: javascript ecmascript-2017

我可以避免写所有字段with = ""吗?

const defaultPlayer = {
        name: "",
        surname: "",
        age: "",
        skill: ""
      }
// ...
mapPropsToValues = ({ player }) => player || defaultPlayer

我是否可以使用javascript来避免一直写= ""

我的意思是,如果我已经知道每个字段的defalut值是""(空字符串),我怎么能这样做而不是明确地写每个字段?

1 个答案:

答案 0 :(得分:0)

您可以使用with块和Proxy对象以及eval完成此操作:



let defaultPlayer;
with (new Proxy({}, {
  has(o, key) {
    try { eval(key); }
    catch (e) { return true; }
  },
  get() {
    return '';
  }
})) {
  defaultPlayer = {
    userName,
    age,
    surname,
    isAdmin: false
  };
}

console.log(defaultPlayer);




当省略属性值时,它会查找与键名称相同的变量。例如,{x}{x: x}相同。在查找变量之前,我们可以使用with()语句对对象的属性进行JavaScript检查。我们将定义Proxy而不是普通对象,以便为在本地环境中看不到的任何变量返回''(通过在{{1时测试异常)他们的名字)。

  

☠️这是一个令人讨厌的边缘案件的淫秽黑客。永远不要使用它。 ☠️