我想向尚未分配的Javascript对象添加特定属性,该属性是父对象的一部分。通常我会执行以下操作:
let obj = {};
if(!obj["property"])
{
obj["property"] = {};
}
obj["property"]["property2"] = value;
上面的代码是否可以用一个衬里编写,并且在if语句中没有对象分配?
与Linux进行比较,我想使用类似于mkdir -p ./a/b而不是mkdir a的东西。 cd a;麦克迪尔湾
谢谢。
最佳答案
是的,您可以这样做:
let obj = {};
(obj["property"] = obj["property"] || {})["property2"] = "value";
console.log(obj);
它利用
||
运算符检查虚假值,因此只有在检查对象或某些始终为真的值时,此方法才能可靠地工作。然后利用
=
运算符返回分配的值这一事实。由于它是一个对象,而JS中的对象是引用类型,因此您可以为其分配属性,它将使先前分配的对象发生变化。但是,这很丑。我认为不应过多地强调编写“一个班轮”代码。