【问题标题】:How can I set new value for preference object javascript?如何为偏好对象 javascript 设置新值?
【发布时间】:2017-10-31 11:20:47
【问题描述】:
var objectA = {x: 10, y: 10};
var objectB = objectA;

    objectB.x = 100;
    objectB.y = 100;
    console.log(objectA) => {x: 100, y: 100}

    but:
    objectB = null;
    console.log(objbectA) => {x: 10, y: 10} // Not null

如何设置objectA = nullobjectB

【问题讨论】:

  • 你不能。对象通过引用链接。所以 1 的变化会影响其他的。但是当您执行objectB = null 时,您将替换此引用。因此链接被破坏了。
  • 你问的根本不可能。

标签: javascript object preference


【解决方案1】:

当您执行 var objectB = objectA 时,您只是在复制引用而不是实际值。这就是为什么当您将 objectB 设置为 null 时,它设置为 null 但 ObjectA 中的引用仍然存在。

【讨论】:

    【解决方案2】:

    你不能。当对象在内存中分配时,它会一直呆在那里直到被释放。在您的情况下,两个变量都指向相同的内存位置。没有办法让它变为空,但是你调用这个对象的一个​​方法,这将清除值:

    var objectA = {x: 10, y: 10, clear: function() { this.x = 0; this.y = 0; }};
    var objectB = objectA;
    
    objectB.x = 100;
    objectB.y = 100;
    console.log(objectA) => {x: 100, y: 100}
    
    
    objectB.clear();
    console.log(objbectA) => {x: 0, y: 0}
    console.log(objbectB) => {x: 0, y: 0}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2014-10-10
      • 2021-07-19
      • 2022-12-10
      相关资源
      最近更新 更多