zoukankan      html  css  js  c++  java
  • 操作对象的几种方法

    一:判断对象是否为空

      4.  使用ES6的Object.keys()方法        //推荐方法还是放第一个吧

        var data = {};

        var arr = Object.keys(data);

        console.log(arr.length == 0); //true;

      

      1. 转换成字符串进行比对

        var data = {};

          var flag = (JSON.stringify(data) == "{}");

      2.  for in 循环判断

        var data = {};

        var a = function (){

          for(var key in data) {
            return false;
          }
          return true;

        }

        a(); //true

      3.  jquery的isEmptyObject方法

        var data = {};

        var a = $.isEmptyObject(data);

        console.log(a); //true

    二: 删除对象中某个属性

      delete:

        var a = {a : 1, b: 2};

        delete a.b;

        console.log(a);  //{a: 1}

    三:添加对象属性

      var a = {a: 1};

      a.b = 2;

      console.log(a); // {a: 1,b: 2}

    四:对象的深拷贝与浅拷贝

      最简单明了的区别

        浅拷贝是指, 修改B对象的属性和方法会影响到A对象的属性和方法, 我们称之为浅拷贝

        深拷贝是指, 修改B对象的属性和方法不会影响到A对象的属性和方法, 我们称之为深拷贝

      浅拷贝:

        1.  var a = {a: 1, b: 2};

        var b = a;

        b.c = 3;

        b.b = 4;

        console.log(a); // {a: 1, b: 4, c: 3}

      深拷贝:

        1. for in循环遍历 

          function deepClone(obj){
              let objClone = Array.isArray(obj)?[]:{};
              if(obj && typeof obj==="object"){
                  for(key in obj){
                      if(obj.hasOwnProperty(key)){
                          //判断ojb子元素是否为对象,如果是,递归复制
                          if(obj[key]&&typeof obj[key] ==="object"){
                              objClone[key] = deepClone(obj[key]);
                          }else{
                              //如果不是,简单复制
                              objClone[key] = obj[key];
                          }
                      }
                  }
              }
              return objClone;
          }    
          let a={a: 1, b: 2},b=deepClone(a);
          a.b=4;
          console.log(a); {a: 1,b: 4}
          console.log(b); {a: 1,b: 2}
        

        2. JSON.stringify 和 JSON.parse         

          function deepClone(obj){
              let _obj = JSON.stringify(obj)
              let objClone = JSON.parse(_obj);
              return objClone
          }   
          var a = {a: 1, b: 2};
          var b = deepClone(a);
          b.b = 4;
          console.log(b); //{a: 1, b: 4}
          console.log(a); //{a: 1, b: 2}

          

        3. Jquery的extend方法

         
           

          $.extend( [deep ], target, object1 [, objectN ] )

          deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝

          target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。

          object1  objectN可选。 Object类型 第一个以及第N个被合并的对象。 

    let a=[0,1,[2,3],4],b=$.extend(true,[],a);
    a[0]=1;
    a[2][0]=1;
    console.log(a,b);

        

        

  • 相关阅读:
    JavaScript 中正则匹配时结果不一致的问题
    /dev/null
    Xcode 中通过 target 运行多个 c 程序
    Xcode 调试时打印变量值
    Recoil 请求的刷新之使用随机参数
    npm ci 与 install 的区别
    项目中私有 npm 源的设置
    Crontab 的使用
    Nest 在日志中打印对象
    配置 ESLint 自动格式化自闭合标签(Self closing tag)
  • 原文地址:https://www.cnblogs.com/Mr-Rshare/p/10442302.html
Copyright © 2011-2022 走看看