为什么b
不等于要null
在下面的代码结束了吗?
var a = { property: "value" },
b = a;
console.log(a === b); // true
a = null;
console.log(b); // Object { property: "value" }
我认为a
和b
是与一个对象相关联的两个引用,因此都将成为null
。
在该行中:
a = 5;
您将“ a”指向包含整数值5的新内存块,将其先前对原始创建对象的引用覆盖。尝试以下方法:
var a = { property: "value" },
b = a;
console.log(a === b); // true
a.property = 5;
console.log(b); // Object {property: 5}
这样,您不会覆盖a
,而是将键property
指向的内存块从具有值的字符串更改为具有值"value"
的整数5
。
这将保留a
对包含您最初创建的对象的内存块的引用,您还可以将其设置为“ b”以指向下一行。
编辑:以上是回答您以前的问题。如果设置a
为null,它将简单地删除对原始对象的引用。该对象将不会被垃圾回收,而任何东西(b
在这种情况下)仍具有对该对象的引用。创建b
完之后,引用是独立的,但是两个引用都指向相同的内存块。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句