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>
  • 相关阅读:
    js 数组详解(javascript array)
    CentOS 修改IP地址, DNS, 网关
    Leetcode 652.寻找重复的子树
    Leetcode 650.只有两个键的键盘
    Leetcode 649.Dota2参议院
    Leetcode 648.单词替换
    Leetcode 647.回文子串
    Leetcode 645.最长数对链
    Leetcode 643.子数组最大平均数I
    Leetcode 640.求解方程
  • 原文地址:https://www.cnblogs.com/xzsblog/p/13229871.html
Copyright © 2011-2022 走看看