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);
      
  • 相关阅读:
    0052 html5多媒体音频标签audio
    0051 HTML5概述、新增标签、简单案例
    0050 VSCode软件
    0048 :focus -- 获得焦点元素
    0046 CSS3过渡:transition
    Linux 中的常见锁及其基本原理
    小程序海报最佳实现思路,可视化编辑直接生成代码使用
    babel插件的相关知识
    vue-next 函数式 api
    小程序如何改变onLoad 的执行时机?
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/10349215.html
Copyright © 2011-2022 走看看