了解Object.freeze
Object.freeze()用于冻结一个对象
应用场景
对于纯展示的大数据,都可以使用Object.freeze提升性能。
如果你有一个对象,里面的内容特别多,而且都是一些静态数据,并确保不会修改它们,就可以冻结起来。
这样可以让性能大幅度提升,提升的效果随着数据量的递增而递增。
深冻结对象:
Object.prototype.sg = 'xz'
function deepFreeze(obj) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
const value = obj[key]
if (value instanceof Object) {
obj[key] = deepFreeze(value)
}
}
}
return Object.freeze(obj)
}
var test = {
name: 'zs',
info: {
a: 100,
b: 2
}
}
deepFreeze(test)
test.name = 'ls'
test.info.a = 10
console.log(test)
function deepFreeze(obj) {
const keys = Object.getOwnPropertyNames(obj)
keys.forEach(k => {
const value = obj[k]
if (value instanceof Object) {
obj[k] = deepFreeze(value)
}
})
return Object.freeze(obj)
}