在javascript中初始化期间重复JSON属性

在javascript中初始化期间重复JSON属性,javascript,json,Javascript,Json,在javascript中初始化时,我是否可以复制JSON属性,如下面的示例所示 var obj = { prop1: {...}, prop2: prop1 } 编辑:看起来我的数据结构一开始设计得很糟糕,但是下面的解决方案在这种情况下有效。你不能一步完成,你必须使用: var obj = { prop1: {...} }; obj.prop2 = obj.prop1; 注意:在本例中,obj.prop2和obj.prop1引用相同的对象。另一个解决方法是添加prop2并将其声明

在javascript中初始化时,我是否可以复制JSON属性,如下面的示例所示

var obj = { 
prop1: {...},
prop2: prop1 
}

编辑:看起来我的数据结构一开始设计得很糟糕,但是下面的解决方案在这种情况下有效。

你不能一步完成,你必须使用:

var obj = { 
  prop1: {...}
};

obj.prop2 = obj.prop1;

注意:在本例中,obj.prop2和obj.prop1引用相同的对象。

另一个解决方法是添加prop2并将其声明为未定义,然后在对象上添加一个setProp函数,该函数可以为您设置属性

var obj = {
    prop1: {someValues: [], someValue: {}},
    prop2: undefined,
    setProp2: function(){
        this.prop2 = this.prop1;
    }
};
也许您可以创建一个小函数来创建对象的实例并调用setProp2


我不确定这就是你想要的。如果您可以提供您想要使用它的目的,那么提供一种不同的方法可能会更容易。

为什么您会认为prop2:prop1中的prop1除了变量prop1的值之外还有其他意义,而变量prop1并不存在?对象不是函数。对象属性不是函数变量

您可以尝试prop2:this.prop1,但这会暴露出对其含义的根本误解。看

如果要将两个属性设置为相同的值,则只需执行以下操作:

var obj = (function() {
  var prop1 = {someValues: [], someValue: {}};
  return {
    prop1: prop1,
    prop2: prop1
  };
}());