Object.freeze

摘要:
Object.freeze()方法可以冻结一个对象。freeze()返回和传入的参数相同的对象。数据冻结后不再被修改在vue中数据冻结的时机{{place}}/*script脚本需要操作dom,但是必须在dom加载完毕以后,才可以进行操作。所以只能放在dom区域之外。*/vardata={place:'city'};/*冻结一个对象,也就是说对象中的属性不可以继续改了。*/Object.freeze;varvm=newVue;/*冻结了之后,vue不会再追踪对象属性的变化。*///Object.freeze;data.place='wuhan';写一个将对象彻底冻结的函数varconstantize==˃{Object.freeze;Object.keys.forEach}我们顺便再来看看obj.keys

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;
冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,
不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。
此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。
数据冻结后不再被修改
Object.freeze第1张
在vue中数据冻结的时机

<html>
<head>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
</head>
<body>
  <p id='node'>
    {{place}}
  </p>
</body>
<footer>
  <script type="text/javascript">
    /*
      script脚本需要操作dom,但是必须在dom加载完毕以后,才可以进行操作。
      所以只能放在dom区域之外。
    */
    var data = {place: 'city'};
    /*冻结一个对象,也就是说对象中的属性不可以继续改了。这里需要注意一点,那就是
     要想实现通过冻结使得Vue实例无法改变data属性的值,那么必须在将data挂载到
     Vue上之前就将它冻结。如果先挂载后冻结,那么冻结失效。如下红色字体代码所示。
    */
    Object.freeze(data);
    var vm = new Vue({
      el: '#node',
      data: data,
    });

/*
      冻结了之后,vue不会再追踪对象属性的变化。那么,双向数据绑定就失效了。对属性数据的修改,在视图上就不会显示变化。
    */

    //Object.freeze(data);

    data.place = 'wuhan';
  </script>
</footer>
</html>

写一个将对象彻底冻结的函数

var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach((key,i)=>{
    if(typeof obj[key]==='object'){
      constantize(obj[key]);
    }
  })
}

我们顺便再来看看obj.keys
Object.freeze第2张

免责声明:文章转载自《Object.freeze》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在visual studio code中配置python以及解决中文乱码问题css中的文本字间距离、行距、overflow下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

学习pycharm----自动化接口

1.pycharm中安装requests a:打开pycharm软件,点击file-setting b:在目录下点击Project Interpreter,在目录的右侧,点击右上方的+ c: 在输入框中输入requests,点击安装(提示sucessful时,表名安装第三方库成功) ps:在pycharm中安装其他第三方库是一样的步骤 2.使用pychar...

openlayers4 入门开发系列结合 echarts4 实现散点图(附源码下载)

前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子,这个也是学习 openlayers4 的好素材。 openlayers4 入门开发系列的地图服务基于 Geoserver 发布的,关于 Geoserver...

PHP 设计模式 笔记与总结(5)PHP 魔术方法的使用

PHP 魔术方法的使用 ① __get/__set:将对象的属性进行接管 当访问一个不存在的对象属性时: index.php <?php define('BASEDIR',__DIR__); //定义根目录常量 include BASEDIR.'/Common/Loader.php'; spl_autoload_register('\Commo...

Docker Volume 之权限管理(一)

摘要:Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性。然而Docker数据卷的权限管理经常是非常令人困惑的。本文将结合实例给大家介绍Docker数据卷权限管理中的常见问题和解决方法。 Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可...

vue el-table 自适应表格内容宽度

由于表头和列是分开渲染的,通过el-table 设置fit属性,只能撑开表头,但是没有办法根据列的内容去适应宽度。网上找了一些使用根据表格内容计算表头宽度的文章,记个笔记。 代码逻辑是通过vue 的watch 监控表格的数据data,计算每列的内容和表头的最大宽度,计算的时候把表格内容使用span标签包裹,然后计算span标签的宽度width:px,然后再...

GS与MS之间通信

GS与MS之间通信 注意GS与MS是两个线程,现在是每个map一个线程,他们之间是内部协议进行通信的,那既然是两个线程那如何通信呢,看了net进程通信这个就比较简单了 举个例子 m_pMap->Gs2MsData(gs2ms_add_player, m_nChannelId, (void*)&rActorEx, sizeof(rActo...