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

        

        

  • 相关阅读:
    一个简单的knockout.js 和easyui的绑定
    knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
    Knockout自定义绑定my97datepicker
    去除小数后多余的0
    Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
    Azure ARM (1) UI初探
    Azure Redis Cache (3) 创建和使用P级别的Redis Cache
    Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
    Windows Azure Storage (23) 计算Azure VHD实际使用容量
    Windows Azure Virtual Network (11) 创建VNet-to-VNet的连接
  • 原文地址:https://www.cnblogs.com/Mr-Rshare/p/10442302.html
Copyright © 2011-2022 走看看