如何通过引用分配对象属性

时间:2018-01-23 13:08:59

标签: javascript

如何通过引用分配对象属性。我的对象看起来像这样:

obj = {
    level: {
        level: {
           level: {} 
     }
   }
 }

我的代码是这样的:

var obj = {
    level: {
        level: {
            level: {} 
        }
    }
 };


do {
    var level = obj.level;
} while(Object.keys(level).length != 0);


level = {
    newPro: 'Some value'
}

但是最后一级属性的任何变化。

预期产出:

{
    level: {
        level: {
            level: {
                newPro: 'Some value'
            } 
        }
   }
}

2 个答案:

答案 0 :(得分:1)

你的do-while

的逻辑
while(Object.keys(level).length != 0)
由于level总是obj.level并且永不改变,因此

陷入了无限循环。

你几乎就在那里,只是

  • 保留临时对象
  • 将值分配给其属性(newPro,而不是直接指定值

var obj = {
  level: {
    level: {
      level: {}
    }
  }
};
var temp = obj;
while (Object.keys(temp).length > 0) {
  temp = temp.level;
}
temp.newPro = 'Some value'
console.log(obj);

答案 1 :(得分:0)

您可以测试下一个level是否存在。

如果存在,请将level的值作为temp的新值,以用于新的while循环。

如果没有,请为临时对象分配一个新属性。



var object = { level: { level: { level: {} } } },
    temp = object;

while (temp.level) {
    temp = temp.level;
}

temp.newPro = 'Some value';

console.log(object);