zoukankan      html  css  js  c++  java
  • DeepFreeze深层冻结对象属性值的修改

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <script>
     9             let obj ={
    10                 name: '爸爸',
    11                 age: 11,
    12                 child: {
    13                     chileName: '儿子',
    14                     chileAge: 1,
    15                     toy: {
    16                         num:25
    17                     }
    18                 }
    19             }
    20             // 输出所有的属性名字,这个只能获取到第一层的
    21             let objPro = Object.getOwnPropertyNames(obj)
    22             console.log(objPro)
    23             // 进行冻结
    24             Object.freeze(obj)
    25             // 进行修改第一层和第二层
    26             obj.name = '你好'
    27             console.log(obj.name) //还是输出爸爸
    28             obj.child.chileName = '小红'
    29             console.log(obj.child.chileName) //输出小红
    30             
    31             //想要将整个对象都冻结
    32             function deepFreeze(object) {
    33                 let propNames = Object.getOwnPropertyNames(object);
    34                 for (let name of propNames) {
    35                     let value = object[name];
    36                     object[name] = value && typeof value === 'object'? deepFreeze(value):value;
    37                 }
    38                 return Object.freeze(object)
    39             }
    40             //再次进行操作
    41             deepFreeze(obj)
    42             obj.name = '你好'
    43             console.log(obj.name) //还是输出爸爸
    44             obj.child.chileName = '小黑'
    45             console.log(obj.child.chileName) //输出小红
    46         </script>
    47     </body>
    48 </html>
  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/xzsblog/p/13229871.html
Copyright © 2011-2022 走看看