整理下之前做的有点疑惑的js基础题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
Object.freeze
const person = {
name: "string",
address: {
street: "1",
},
};
Object.freeze(person);
person.name = 'number'
person.address.street = "2"; //flag
console.log(person); //{ name: 'string', address: { street: '2' } }
这题的主要问题是
为什么flag处的对象已经冻结,还可以修改值?
flag处:修改的是冻结对象里面的引用值,其不是冻结的,或者我的理解是这样的,Object.freezee 也相当于一个浅拷贝,只对第一层进行了拷贝,其余的还存在引用关系