传递对象与ID

时间:2016-10-15 13:53:19

标签: javascript object

我有一般的javascript问题。

我们说我有personsPerson个对象的数组。每个Person都有ID,姓名,地址等。

在我处理persons的函数中,我通常会传递我操纵的Person对象。然而,这感觉不对。就像我浪费记忆一样。

所以我的问题:

  • 我通过传递对象而不仅仅是他们的ID来使用额外的内存吗?
  • 使用getPersonByID()并只是传递ID而不是更好的选项?
  • 如何管理多个对象实例?

3 个答案:

答案 0 :(得分:4)

  

我通过传递对象而不仅仅是ID来使用额外的内存吗?

不,您正在传递对象的引用,而不是每次都复制它。因此,每次传递person对象时都不会使用额外的内存......所以当你问:

  

使用getPersonByID()并只是传递ID而不是更好的选择吗?

不是真的,因为您只需添加必须通过您的人员列表并再次检索该对象的开销。

  

如何管理多个对象实例?

这取决于很多事情,例如范围,谁在引用等等。我建议你看看how JS garbage collection and memory management works以便更好地理解它。

答案 1 :(得分:2)

JavaScript中的对象“值”是引用。将对象传递给函数会将引用传递给对象,并且它不比传递字符串(如id值)或数字更昂贵。

换句话说:传递或分配对象值涉及制作对象的副本。

答案 2 :(得分:1)

在javascript中,对象(对象文字,数组和函数)都通过引用传递。将对象传递给函数时,不要像在C / C ++中那样复制它。而是传递引用(基本上是对象的第二个名称)。

function func(object) { object.changed = true; }
let a = {};
func(a);
console.log(a.changed); //true

在另一方传递ID会更加冗长,实际上会产生额外的开销,而且您可以根据自己的需要设计应用程序。