我想向尚未分配的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中的对象是引用类型,因此您可以为其分配属性,它将使先前分配的对象发生变化。

但是,这很丑。我认为不应过多地强调编写“一个班轮”代码。

10-06 16:11
查看更多