Object.freeze

158 阅读1分钟

了解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)
        }