我发现接口非常有用,但由于内存问题需要开始优化我的应用程序,我意识到我实际上不太了解它们在内部是如何工作的。
比如说,我有
interface Foo {
bar: number
}
我使用以下方式实例化一些变量:
let x : Foo = { bar: 2 }
Q1: 这会创建一个新的对象吗?
现在,假设我想要改变“bar”的值。有两种方法可以实现。第一种方法:
x = { bar: 5 }
Q2: 这个第一种方式会创建一个新对象并替换x
所引用的旧对象,导致旧对象(带有bar = 2
)最终被垃圾回收吗?
第二种方式:
x.bar = 5
Q3: 这样不会创建一个新对象,而只是更新第一个对象中的bar
值(它原来为bar = 2
),并避免垃圾回收,因为仍然只有一个对象在使用吗?我相信我的问题的答案都是肯定的,但我想要确定一下,因为我正在处理频繁的垃圾回收问题,我认为我的代码中许多部分使用了“第一种方式”,而不是第二种方式,可能是一个重要的贡献因素。