【发布时间】:2018-08-14 08:14:18
【问题描述】:
我发现接口非常有用,但由于内存问题我需要开始优化我的应用程序,我意识到我并不真正了解它们在内部是如何工作的。
说我有
interface Foo {
bar: number
}
我用这种类型实例化了一些变量:
let x : Foo = { bar: 2 }
Q1:这会创建一个新对象吗?
现在,假设我想更改 bar 的值。我做这两种方式之一。第一种方式:
x = { bar: 5 }
Q2:这第一种方式是否会创建一个新对象并替换x 引用的旧对象,从而导致旧对象(bar = 2)最终被垃圾回收?
第二种方式:
x.bar = 5
Q3:这是否不会创建新对象,而只是更新第一个对象(具有bar = 2)中bar 的值并避免垃圾收集,因为仍然只有一个对象并且它正在使用中?
我相信我的问题的答案是“是”、“是”和“是”。但我想确定一下,因为我对处理过于频繁的垃圾收集感到非常头疼,而且我认为我的代码的许多部分使用“第一种方式”而不是第二种方式这一事实可能是一个很大的促成因素。
【问题讨论】:
标签: javascript typescript memory