首页 > 其他 > 详细

DeepFreeze深层冻结对象属性值的修改

时间:2020-07-03 14:40:44      阅读:53      评论:0      收藏:0      [点我收藏+]
 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>

 

DeepFreeze深层冻结对象属性值的修改

原文:https://www.cnblogs.com/xzsblog/p/13229871.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!