变量作为对象引用不起作用

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (7)
var a = {};
var b = a;
b.c = "whatever";

console.log(a.c) // whatever. 

按预期工作,a可以由b更新;

var a = {};
var b = a;
b = "whatever";

console.log(a) // {}
console.log(b) // whatever

没有按预期工作。a未更新b

更新问题:是否只能通过引用更新对象属性?不是对象本身?

提问于
用户回答回答于

看看这篇关于在Javascript中解释值与引用的文章。

当你这样做时,你已经覆盖了参考:

 b = "whatever";

当你这样做时,b不再指向a了。现在,b它有自己的价值。您可以更新b引用的对象的属性,如示例所示:

b.c = "whatever";
用户回答回答于

这是他们的值存储在内存中的方式:

第一种方法

         +-----+------+
Variable |  a  |   b  |
         +-----+---|--+
   Value | {}  |<--+  | //'b' points to 'a', so every change (to the object) 
         +-----+------+ // in 'b' will modify 'a'.

第二种方法

         +-----+---------+
Variable |  a  |   b     |
         +-----+---|-----+
   Value | {}  |<--+     | //First assignment.
         +-----+---------+
   Value | {}  | Wahtever| //Second assignment.  So, you're only assigning a new    
         +-----+---------+ //value to 'b' and not modifying the previous  
                           //value (properties/fields) from 'a'.

扫码关注云+社区

领取腾讯云代金券