【发布时间】:2017-09-23 15:39:16
【问题描述】:
我已经读过,在 javascript 中将对象作为参数传递(也在 Typescript 中继承)时,它是通过引用传递的。
这可能会导致内存泄漏吗?
让我们假设一个场景:
- 以下组件,执行 saveCustomerInfo 函数
- 然后该函数将对象推送到数组中。
- 组件被销毁。
@Component({
selector: "customer-details",
templateUrl: "../html/customerDetails.template.html"
})
export class CustomerDetailsComponent {
customerData: Customer;
constructor(private customerService: CustomerService): void {}
saveCustomerInfo(): void {
this.customerService.saveCustomer(this.customerData);
}
}
这不会导致内存泄漏吗,因为服务现在保存了组件属性的引用,不允许组件被垃圾收集?
无论如何,此类调用的最佳做法是什么?我们应该只传递函数内部通过“let”声明的临时对象还是传递由 Object.create() 创建的克隆?
非常感谢您,
迪米特里斯
【问题讨论】:
-
试试
customerData: new Customer();
标签: javascript angular object memory-leaks pass-by-reference