Nodejs 对象

nodejs 中的对象都是引用

今天参加了入职后的第一次 code review,当自己写的代码投屏的时候还是非常紧张的……

某个功能的需求是将一部分数据缓存到内存中,目前的做法是在内存中维护了一个数组与一个对象,对象用来做Map。这部分功能对外提供 更新、获取的 API。在更新时,取出 map 中的对象进行更新。

由于最近刚刚开始写 JS ,在取出对象更新后,又写了一个更新方法,拿更新后的对象分别覆盖数组、对象中相应的值。老大指出 JS 中的对象都是引用,只要拎出来更新以后所有引用的地方都会自动更新好,不用再调用更新了。唉,基础知识真是差。下面给出一下说明代码:

let obj = {foo:'bar'};
console.log(obj)
let arr = [];
arr.push(obj);
let obj_map = {item:obj};
console.log(arr);
console.log(obj_map);
let objget = obj_map.item;
objget['foo'] = 'changed';
console.log(arr);
console.log(obj_map);

输出结果为:

{ foo: 'bar' }
[ { foo: 'bar' } ]
{ item: { foo: 'bar' } }
[ { foo: 'changed' } ]
{ item: { foo: 'changed' } }

在更新objget后,数组、对象中的引用都被更新了。

要多学习!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.