对象里的对象 在栈和堆的储存
来源:2-3 新的声明方式const
慕莱坞9430059
2020-12-28
老师,为什么会出现下面两种情况,对象里面的 对象的属性值修改后会影响前面的输出?
对象里面的对象,在栈和堆上具体是怎么储存的呢?
let obj = {
name: 'LiMing',
age: '30',
skill: {
name: 'code'
}
};
console.log(obj);
// {name: "LiMing", age: "30", skill: {…}}
obj.age = '31';
console.log(obj);
// {name: "LiMing", age: "31", skill: {…}}
let obj = {
name: 'LiMing',
age: '30',
skill: {
name: 'code',
year: 1
}
};
console.log(obj);
//{name: "LiMing", age: "30", skill: {name: "code", year: 2}}
obj.skill.year = 2;
console.log(obj);
//{name: "LiMing", age: "30", skill: {name: "code", year: 2}}
写回答
1回答
-
问题中第一个例子中的obj.age属性是number型,所以是在栈内存,一个对象的改变不会影响其他对象。
问题中第二例子中的obj.skill属性是object,所以是存在堆内存的,只是一个引用,一个对象的改变会影响其他对象。
032020-12-29
相似问题