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);

        

        

  • 相关阅读:
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.rust语言特性 attilax 总结
    Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage  mvc mvp的 java c#.net php js
    Atitit.软件硕士  博士课程 一览表 attilax 总结
    Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.获取approot api 应用根路径 java c#.net php asp
    atitit.bsh BeanShell 的动态脚本使用java
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
    atitit.ntfs ext 文件系统新特性对比
  • 原文地址:https://www.cnblogs.com/Mr-Rshare/p/10442302.html
Copyright © 2011-2022 走看看