zoukankan      html  css  js  c++  java
  • js中的Object

    js中的Object

    1. 浅克隆

      var obj = {
          a: 1,
          b: 2,
          c: 3
      }
      
      方式一:
          var o = Object.assign({}, obj);
      方式二:
          var {...o} = obj;
      
    2. 深克隆

      JSON.parse(JSON.stringify(obj))
      
    3. freeze

      浅冻结,属性值不能修改,但是嵌套的引用类型不起作用
          Object.freeze(obj);
          obj.a = 11 // 修改属性无效
      
    4. seal

      密封对象,不能添加和删除属性
          Object.seal(obj);
          obj.d = 33; // 添加新属性无效
      
    5. 只读属性

      var obj = {
          a: 1,
          b: 2
      }
      Object.defineProperty(obj, "c", {value: 3, writable: false});
      obj.c = 4; // 无效
      console.log(obj.c);
      
    6. 不可枚举属性

      var obj = {
          a: 1,
          b: 2
      }
      Object.defineProperty(obj, "c", {value: 3, enumerable: false});
      
      for(let item in obj) {
          console.log(obj[item]); // 1 2
      }
      
    7. 不可重新配置属性

      var obj = {
          a: 1,
          b: 2
      }
      Object.defineProperty(obj, "c", {value: 3, enumerable: false, configurable: false});
      Object.defineProperty(obj, "c", {value: 3, enumerable: true}); // 报错
      
    8. 读取属性的配置信息

      var obj = {
          a: 1,
          b: 2
      }
      Object.defineProperty(obj, "c", {value: 3, enumerable: false, configurable: false});
      console.log(Object.getOwnPropertyDescriptor(obj, "c")); 
      输出信息
          { 
              value: 3,
              writable: false,
              enumerable: false,
              configurable: false 
          }
      
    9. get和set

      var obj = {
          a: 1,
          b: 2
      }
      Object.defineProperty(obj, "bb", {
          get: function() {
              console.log("取值");
              return this.b;
          },
          set: function(value) {
              console.log("赋值", value);
              this.b=value;
          }
      });
      
      obj.bb=1;  // 赋值 1
      console.log(obj.bb);
      
  • 相关阅读:
    NET与J2EE比拼
    NET与J2EE比拼
    Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录
    PS去除图片中文字的方法详细图文教程
    VC下绘图程序Demo
    U盘(auto病毒)类病毒分析与解决方案
    数据库技术源代码
    多边形填充实验
    错误总结1,动态加载部分不能显示的原因
    android实现开机欢迎界面
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/10349215.html
Copyright © 2011-2022 走看看