如果我有这样的对象:
obj = {a:{aa:1}, b:2};
我想创建一个快捷变量(指向obj.a.aa的指针)x,如下所示:
x = obj.a.aa;
然后我想使用x将值3分配给obj.a.aa:
x = 3; // I would like for obj.a.aa to now equal 3
console.log(obj.a.aa); // 1 (I want 3)
如何将x设置为导致值3进入obj.a.aa?
我理解obj.a.aa是一个原语,但是如何定义一个指向它的变量,然后我可以使用该变量为属性赋值?
答案 0 :(得分:8)
你不能使用x = value,因为它不会保留任何引用,只是一个副本。您必须引用父分支才能这样做:
x = obj.a;
然后设置值:
x.aa = 3;
答案 1 :(得分:3)
或者,使用函数:
var set_x = function(val){
obj.a.aa = val;
}
答案 2 :(得分:0)
当然,你不能 - 你不试图修改作为对象属性名称的引用,而是试图修改对象。要修改对象,您需要对该对象的引用。
话虽如此,这可能是一种创造性的方式。创建一个函数,该函数将对象作为构造函数,并为函数提供修改对象引用的客户=
setter或方法。这样的事情可能有用。