我有一般的javascript问题。
我们说我有persons
个Person
个对象的数组。每个Person
都有ID,姓名,地址等。
在我处理persons
的函数中,我通常会传递我操纵的Person
对象。然而,这感觉不对。就像我浪费记忆一样。
所以我的问题:
答案 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会更加冗长,实际上会产生额外的开销,而且您可以根据自己的需要设计应用程序。