我可以避免写所有字段with = ""
吗?
const defaultPlayer = {
name: "",
surname: "",
age: "",
skill: ""
}
// ...
mapPropsToValues = ({ player }) => player || defaultPlayer
我是否可以使用javascript来避免一直写= ""
?
我的意思是,如果我已经知道每个字段的defalut值是""
(空字符串),我怎么能这样做而不是明确地写每个字段?
答案 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时测试异常)他们的名字)。
☠️这是一个令人讨厌的边缘案件的淫秽黑客。永远不要使用它。 ☠️