Vue 会通过 Object.defineProperty 对数据进行劫持,来实现视图响应数据的变化,
然而有些时候我们的组件就是纯粹的数据展示,不会有任何改变,
我们就不需要 Vue 来劫持我们的数据,在大量数据展示的情况下,
这能够很明显的减少组件初始化的时间,那如何禁止 Vue 劫持我们的数据呢?
可以通过 Object.freeze 方法来冻结一个对象,一旦被冻结的对象就再也不能被修改了。
getdata() {
const users = axios.get("/api/users");
this.users = Object.freeze(users);
}
那就用到object.freeze方法了,它可以防止vue对它的监听。从而避免这种资源的浪费,不要看它小,而忽略,不积跬步无以至千里。
Object.freeze() 方法用于冻结对象,禁止对于该对象的属性进行修改(由于数组本质也是对象,因此该方法可以对数组使用)。在 Mozilla MDN 中是如下介绍的:
可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改
该方法的返回值是其参数本身。
需要注意的是以下两点
Object.freeze() 和 const 变量声明不同,也不承担 const 的功能。
const和O