一、Object.freeze可以冻结一个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。该方法返回被冻结的对象。
如果你有一个巨大的数组或Object,并且确信数据不会修改,使用Object.freeze()可以让性能大幅提升。这种提升大约有5~10倍,倍数随着数据量递增,对于纯展示的大数据,都可以使用Object.freeze提升性能。
具体方法
data(){
return {
list:Object.freeze([
{id:1,name:'zs'},
..... //假设这里很多很多条数据
]),
list2:[{id:1,name:'zs'}] //正常写法
}
}
深度冻结
由于Object.frezze()只能浅度冻结
function deepFreeze(obj){
for(key in obj){
if(obj[key] instanceof Object){
deepFreeze(obj[key])
}
}
return Object.freeze(obj)
}
let person = {
name: '小明',
age: 18,
child:{
name:'小黄',
age: 2
}
}
deepFreeze(person)
person.child.name = '小红'
console.log(person) //输出没变