简述Js中,判断对象为空对象的几种方式
1、空对象、空引用以及undefined三种概念的区别
- 空对象:是对象,但它的值是指向没有任何属性的对象的引用, {}是指 不含任何属性 的对象,当然对象属性包括 字面值和函数;
 - 空引用:obj=null 是指  变量值指向null变量  ,null是对象,但是空引用(不指向任何对象);
var a = null;
console.log(typeof null); //object 注意:null 参与数值运算时其值会自动转换为
console.log(null + );//
console.log(null * );// - 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 === );//true - 使用ES6的Object.keys()方法,与上述方法类似,返回值也是对象中属性名组成的数组
var a = {};
console.log(Object.keys(a).length === );//true 返回不包括原型上的可枚举属性,即自身的可枚举属性 - jquery的isEmptyObject方法
var a = {};
//此方法是jquery将(for in)进行封装,使用时需要依赖jquery
console.log($.isEmptyObject(a)); //true 
3、遇到的问题
暂无
简述Js中,判断对象为空对象的几种方式的更多相关文章
- js中构造函数的原型添加成员的两种方式
		
首先,js中给原型对象添加属性和方法. 方式一:对象的动态特效 给原型对象添加成员 语法:构造函数.prototype.方法名=function (){ } 方式二:替换原型对象(不是覆盖,而是替换, ...
 - js中判断对象具体类型
		
大家可能知道js中判断对象类型可以用typeof来判断.看下面的情况 <script> alert(typeof 1);//number alert(typeof "2" ...
 - js中的函数,Date对象,Math对象和数组对象
		
函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...
 - (转)Java 中关于String的空对象(null) ,空值(empty),空格
		
原文出处:Java 中关于String的空对象(null) ,空值(empty),空格 定义 空对象: String s = null; 空对象是指定义一个对象s,但是没有给该对象分配空间,即没有实例 ...
 - JS中判断鼠标按键的问题
		
JS中判断鼠标按键的问题.IE左键是 window.event.button = 1右键是 window.event.button = 2中键是 window.event.button = 4没有按键 ...
 - Js中判断变量存不存在的问题
		
前面写过jquery对象存在与否的判断.现在谈下Js中判断变量存不存在的问题. 如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行.注意,这种判断只要变量申明过, ...
 - js中判断数据类型的四种方法总结
		
js中判断数据类型的四种方法 前言 在js中,我们经常需要判断数据的类型,那么哪些方法可以用来判断数据的类型呢?哪种方法判断数据类型最准确呢? 我们来一个个分析: 1.typeof typeof是一个 ...
 - 简述JS中 appy 和 call 的详细用法
		
Apply 和 Call 两个老生常言的方法,使用过程的一些细节还是有很大的异同,具体使用情况可以参照下面例子详细回顾一下. 区别和详解:js中call()和apply()的用法 1.关于call() ...
 - jq、js中判断checkbox是否选中
		
最近在开发项目时用到checkbox复选框,其中遇到一个问题:在JQ中如何判断checkbox是否被选中呢?之前用JQ获取元素的属性用的都是attr(),但用在checkbox上却没有用,原因何在?? ...
 
随机推荐
- JAVA笔记8-对象转型casting
			
1.规则 (1)基类(父类)的引用类型变量可以指向其子类对象:(向上转型) (2)基类的引用不可以访问其子类对象新增加的成员(属性和方法): (3)可以使用“引用变量 instanceof 类名”来判 ...
 - [Linux系统] 如何修改CentOS7网卡名
			
一.关闭一致性网络设备命名法 cat /etc/sysconfig/grub GRUB_TIMEOUT= GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g ...
 - PHP教程-反序列化的方法
			
序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性.兄弟连PHP培训() 1. ...
 - HGOI 20191106
			
HGOI 20191106 t1 旅行家(traveller) 2s,256MB [题目背景] 小X热爱旅行,他梦想有一天可以环游全世界-- [题目描述] 现在小X拥有n种一次性空间转移装置,每种装置 ...
 - Springboot 默认静态路径
			
springboot 默认静态路径 代码如下所示 类ResourceProperties.class private static final String[] CLASSPATH_RESOURCE_ ...
 - 关于spark与scala版本问题记录
			
记录一下版本问题: spark与scala版本对应问题: 1.官网会给出,如下,spark2.3.1默认需要scala2.11版本 2.在maven依赖网中也可以看到,如下 3.关于idea开发版本中 ...
 - AbpUser 扩展
			
AbpUser表存放的信息比较少,现扩展一下信息 1.在Core层添加UserExtend 类,继承 AbpUser<User>,写入以上各项属性字段,并添加Discriminator 字 ...
 - Java使用FileOutputStream写入文件
			
From: http://beginnersbook.com/2014/01/how-to-write-to-a-file-in-java-using-fileoutputstream/ /* 使用F ...
 - 使用宝塔面板 配置nginx 访问ftp服务器下面的图片
			
如果 你在服务器上 运行war项目 可以在tomcat 配置访问的: tomcat 也贴出来吧! 一.tomca配置访问,需要更改配置文件server.xml ,如果找不到,自己好好找一下 一般在 ...
 - spring的IOC——依赖注入的两种实现类型
			
一.构造器注入: 构造器注入,即通过构造函数完成依赖关系的设定.我们看一下spring的配置文件: <constructor-arg ref="userDao4Oracle" ...