• 简述Js中,判断对象为空对象的几种方式


    1、空对象、空引用以及undefined三种概念的区别

    • 空对象:是对象,但它的值是指向没有任何属性的对象的引用, {}是指 不含任何属性 的对象,当然对象属性包括 字面值和函数
    • 空引用:obj=null 是指  变量值指向null变量  ,null是对象,但是空引用(不指向任何对象);
      var a = null;
      console.log(typeof null); //object  
      
      注意:null 参与数值运算时其值会自动转换为 0
      console.log(null + 123);//123
      console.log(null * 123);//0
    • undefined:未定义,所以不是对象,本身被定义为“undefined”这一特殊类型,当然在js默认不赋值的情况下,一个变量为undefined.;
      var a;
      console.log(a); //undefined
      console.log(typeof a); //undefined
      
      注意:undefined参与任何数值计算时,其结果一定是NaN。NAN不等于任何数,包括自己,任何数加NAN都是NAN; NAN == NANA(false)
    • null 与 undefined的区别
       console.log(null == undefined);//true  ==只需要判断值是否相等
      //ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的
       console.log(null === undefined);//false   ===需要判断类型与值是否全部相等
       console.log(typeof null == typeof undefined);//false

    2、判断是否为空对象的几种方式

    • .将Json对象转化为json字符串,再判断该字符串是否为"{}";
      var a = {};
      console.log(JSON.stringify(a) == "{}");//true    ===同样为true
    • for in语法
      • 简单遍历
        var a = {};
        function isEmptyObj(obj) {
          for (var key in obj) {
            return false;
          }
          return true;
        }
        console.log(isEmptyObj(a));//true
      • 遍历原型及自身上的可枚举属性,需要结合hasOwnProperty去除原型上的可枚举属性
        var a = {};
        function isEmptyObj(obj) {
          for (var key in obj) {
            if ({}.hasOwnProperty.call(obj, key)) return false;
          }
          return true;
        }
        console.log(isEmptyObj(a));//true
    • Object.getOwnPropertyNames()方法 ----- 返回不包括原型上的所有自身属性(包括不可枚举的属性)
      var a = {};
      //获取到对象中的属性名,存到一个数组中,返回数组对象,我们可以通过判断数组的length来判断此对象是否为空
      //注意:此方法不兼容ie8,其余浏览器没有测试
      console.log(Object.getOwnPropertyNames(a).length === 0);//true
    • 使用ES6的Object.keys()方法,与上述方法类似,返回值也是对象中属性名组成的数组
      var a = {};
      console.log(Object.keys(a).length === 0);//true   返回不包括原型上的可枚举属性,即自身的可枚举属性
    • jquery的isEmptyObject方法
      var a = {};
      //此方法是jquery将(for in)进行封装,使用时需要依赖jquery
      console.log($.isEmptyObject(a)); //true

    3、遇到的问题

    暂无

     

  • 相关阅读:
    TP隐藏入口
    CentOs5.2中PHP的升级
    centos 关闭不使用的服务
    也不知怎么了LVS.SH找不到,网上搜了一篇环境搭配CENTOS下面的高可用 参考
    三台CentOS 5 Linux LVS 的DR 模式http负载均衡安装步骤
    分享Centos作为WEB服务器的防火墙规则
    Openssl生成根证书、服务器证书并签核证书
    生成apache证书(https应用)
    openssl生成https证书 (转)
    ls -l 列表信息详解
  • 原文地址:https://www.cnblogs.com/wxh0929/p/11770106.html
Copyright © 2020-2023  润新知