看到 js耗时不值得的坑,数组删数组
中删除数组元素时 使用了Object.freeze
Object.freeze
在删除数组元素时,冻结一个数组有什么用?
因为你贴的这篇文章是胡说八道的。
为了“解决”卡,用了 Object.freeze();然后“解冻”居然还能用 JSON.parse(JSON.stringify())??
Object.freeze()
JSON.parse(JSON.stringify())
能写出这么牛哔的写法也真是人才了。你可千万别学它,你需要的是 Immutable。
作者没有上下文语境,但我猜是是 Vue 2.X 项目。
Vue 2.X 实现数据监听和双向绑定依赖于遍历执行 Object.defineProperty 实现,当你的列表很大、再加上元素的对象属性比较复杂时,因为这个带来的开销就会很大。
Object.defineProperty
所以用 Object.freeze 的作用是告诉 Vue 别去遍历执行 Object.defineProperty,省下了这部分开销。但带来的缺点是数据变化就不能自动刷新视图,需要你手动执行刷新操作。
而如果你这个列表不需要体现在视图上的话,压根就不应该放到 $data 里,也就不需要调用 Object.freeze 了。
$data
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(1)
因为你贴的这篇文章是胡说八道的。
为了“解决”卡,用了
Object.freeze()
;然后“解冻”居然还能用JSON.parse(JSON.stringify())
??能写出这么牛哔的写法也真是人才了。你可千万别学它,你需要的是 Immutable。
作者没有上下文语境,但我猜是是 Vue 2.X 项目。
Vue 2.X 实现数据监听和双向绑定依赖于遍历执行
Object.defineProperty
实现,当你的列表很大、再加上元素的对象属性比较复杂时,因为这个带来的开销就会很大。所以用
Object.freeze
的作用是告诉 Vue 别去遍历执行Object.defineProperty
,省下了这部分开销。但带来的缺点是数据变化就不能自动刷新视图,需要你手动执行刷新操作。而如果你这个列表不需要体现在视图上的话,压根就不应该放到
$data
里,也就不需要调用Object.freeze
了。