对于前端纯大数据展示,不需要做修改其中字段等处理的,使用Object.freeze方法来包裹变量,vue内部不再去监听数据的变化提高性能。
话是这么说,官方资料这么写:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze
但是,问题又来了,这个Object.freeze我应该用在哪个变量上呢?
现有代码段如下:
// res是axios请求的返回数据,basicInfoData是vue上挂的变量
this.basicInfoData = res.data.page.list
console.log(this.basicInfoData, 111)
冻结一:
Object.freeze(res)
this.basicInfoData = res.data.page.list
console.log(this.basicInfoData, 222)
this.basicInfoData.test = 99
打印出来的变量222和111一模一样,给basicInfoData添加变量成功。
冻结二:
this.basicInfoData = Object.freeze(res.data.page.list)
console.log(this.basicInfoData, 222)
this.basicInfoData.test = 99
打印出来的变量222和111明显不同,虽然freeze后少了__ob__,但是__proto__多了很多函数,给basicInfoData添加变量报错。