JavaScript中如何判断对象是否为空的方法
目录
- Object.keys()
- 示例
- 为什么需要额外判断对象的构造函数呢?
- 另一种边界情况
- 总结
在自己的日常开发中,一般使用Object.keys()
来判断对象是否为空:
const obj = {}; Object.keys(obj).length === 0 // true 则为空对象
而在一篇文章中却是如此判断:
const obj = {}; Object.keys(obj).length === 0 && obj.constructor === Object
为什么还要额外判断对象的constructor
呢?即构造函数呢?
Object.keys()
MDN 中关于Object.keys()
的介绍:
Object.keys()
方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
示例
var arr = ['a', 'b', 'c']; console.log(Object.keys(arr)); // ['0', '1', '2'] var obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(Object.keys(obj); // ['0', '1', '2']
为什么需要额外判断对象的构造函数呢?
文章作者写到是为了覆盖包装器实例(当时看到这有点懵逼),后面则解释清楚了。 在 JavaScript 中,有9个内置构造函数。
new Object(); new String(); new Number(); new Boolean(); new Array(); new RegExp(); new Function(); new Date(); new Error();
我们可以使用这些构造函数来创建对象,例如:new Object()
(日常不推荐使用)。
const obj = new Object(); Object.keys(obj).length === 0; // true
平常使用的判断方法也没问题啊
相关推荐
-
js中判断对象是否为空的三种实现方法
在写js脚本的时候经常遇到对象为空或者不是对象的情况,出现这种情况我们可以用if去判断它,然后去执行相应的处理方法,具体判断他们的方法有以下几种: 1.if (typeOf(x) == "undefined") 2.if (typeOf(x) != "object") 3.if(!x) 其中第三种是最简单的方法,但是第三种就不能用if(x)这种互斥的方法去判断,只能在对象前面加! java里面!x为true的时候x肯定为false了,但是这里
-
JavaScript 判断一个对象{}是否为空对象的简单方法
做项目时遇到一个问题,判断一个对象是否为空对象,发现这样判断可以,上代码: 1. 代码1: var a = {}; if(!a){ console.log(1);} else if(a == null) { console.log(2);} else { console.log(3);} 结果为:3 2. 代码2: var b = {}; if(b == {}){ console.log(4);} if(b == '{}') { console.log(5);} if(typeof(b) ==
-
Javascript中判断对象是否为空
发现了一个巧妙的实现: 需要检查一个对象(Object)是否为空,即不包含任何元素.Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair).检查一个对象是否为空,等价于检查对象中有没有键值对.写成代码,形如: if (isEmptyObject(obj)) { // obj is empty } else { // not empty } 至于 isEmptyObject 的实现,jQuery 中有一个很有想法的方式,请看代码: function i
-
简单方法判断JavaScript对象为null或者属性为空
首先说下null与undefined区别: 对已声明但未初始化的和未声明的变量执行typeof,都返回"undefined". null表示一个空对象指针,typeof操作会返回"object". 一般不显式的把变量的值设置为undefined,但null相反,对于将要保存对象的变量,应明确的让该变量保存null值. var bj; alert(bj); //"undefined" bj = null; alert(typeof bj); //&
-
js取消单选按钮选中并判断对象是否为空
一组单选按钮name都为country 复制代码 代码如下: var country = document.getElementsByName('country'); for(var i=0;i<country.length;i++){ if(country[i].checked) { country[i].checked=false; //不选中 } } <c:if test="${shippingAddressList != null && not empty s
-
js判断空对象的实例(超简单)
最近项目遇到判断空对象的一个问题,查阅相关资料再进行总结一下. 判断空对象不比判断空字符串之类的,因为空对象也是一个对象,需要单独分配内存,而不是像字符串那样为空时就是大锅饭,大家都相等,如下代码: 如上代码可以发现,无论是通过对象字面量方式创建的空对象还是通过Object构造函数创建的空对象,彼此之间都是不相等的. 1.将对象转换为字符串进行比较 这种方法很不推荐,但也确实是最容易想到的,主要使用JSON.stringify()这个方法对对象进行强转,贴出来仅供一看: var a={}; va
-
JS实现判断对象是否为空对象的5种方法
1.将json对象转化为json字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify(data) == "{}"); alert(b);//true 2.for in 循环判断 var obj = {}; var b = function() { for(var key in obj) { return false; } return true; } alert(b());//true 3.jquery的
-
JS/Jquery判断对象为空的方法
发现了一个巧妙的实现: 需要检查一个对象(Object)是否为空,即不包含任何元素.Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair).检查一个对象是否为空,等价于检查对象中有没有键值对.写成代码,形如: if (isEmptyObject(obj)) { // obj is empty } else { // not empty } 至于 isEmptyObject 的实现,jQuery 中有一个很有想法的方式,请看代码: function i
-
JavaScript中如何判断对象是否为空的方法
目录 Object.keys() 示例 为什么需要额外判断对象的构造函数呢? 另一种边界情况 总结 在自己的日常开发中,一般使用Object.keys()来判断对象是否为空: const obj = {}; Object.keys(obj).length === 0 // true 则为空对象 而在一篇文章中却是如此判断: const obj = {}; Object.keys(obj).length === 0 && obj.constructor === Object 为什么还要额外判
-
Java中判断对象是否为空的方法的详解
首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.util包下的.这两种StringUtils工具类判断对象是否为空是有差距的: StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判断是否为空的方法参数是字符序列类,也就是String类型 StringUtils.isEmpt
-
freemarker判断对象是否为空的方法
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等. freemarker中显示某对象使用${name}. 但如果name为null,freemarker就会报错.如果需要判断对象是否为空: <#if name??> -- </#if> 当然也可以通过设置默认值${name!''}来避免对象为空的错误.如果name为空,就以默认值("!"后的字
-
Vue中如何判断对象是否为空
目录 Vue判断对象是否为空 方法一 方法二 Vue判断对象为空|cannot read property ‘xx‘ of undefined 结构体如下 解决方法 v-for中的key理解 Vue判断对象是否为空 方法一 将对象转JSON,如果为空集合{} ,那么就是空对象 JSON.stringify(object)=='{}' 方法二 判断对象的长度,如果为零,那就是空对象 Object.keys(object).length==0 Vue判断对象为空|cannot read proper
-
在Javascript中为String对象添加trim,ltrim,rtrim方法
以下我们就用这个属性来为String对象添加三个方法:Trim,LTrim,RTrim(作用和VbScript中的同名函数一样) 复制代码 代码如下: String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } String.prototype.LTrim = function() { return this.replace(/(^\s*)/g, "&quo
-
JavaScript中判断对象类型的几种方法总结
我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 type
-
JavaScript中正则表达式判断匹配规则及常用方法
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字 '\w\w'可以匹配'js' \s可以匹配一个空格(也包括Tab等空白符) \DWS都是表示匹配与
-
JavaScript isArray()函数判断对象类型的种种方法
1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 typeof 的能力有限,其对于Date.RegExp类型返回的都是"object".如: 复制代码 代码如下: typ
-
JavaScript 中有关数组对象的方法(详解)
JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象----函数(js中的一等对象).数组(键值的有序集合). 数组元素的添加 arrayObj.push([item1 [item2 [. . . [itemN ]]]]); 将一个或多个新元素添加到数组结尾,并返回数组新长度 arrayObj.unshift([item1 [item2 [. . .
-
JavaScript中如何判断一个值的类型
我们知道在js中有一个运算符可以帮助我们判断一个值的类型,它就是typeof运算符. console.log(typeof 123); //number console.log(typeof '123'); //string console.log(typeof true); //boolean console.log(typeof undefined); //undefined console.log(typeof null); //object console.log(typeof []);
随机推荐
- Web Jmeter–接口测试工具详解
- 详解Ruby中的单件方法和单件类
- jquery 学习之二 属性相关
- Three.js快速入门教程
- iOS中关于Cookie验证登录状态
- PHP Imagick完美实现图片裁切、生成缩略图、添加水印
- C++设计模式之备忘录模式
- mysql安装配置方法图文教程(CentOS7)
- Linux服务器中MySQL远程连接的开启方法
- 三个不常见的 HTML5 实用新特性简介
- PHP中执行cmd命令的方法
- 又一个典型css实例
- 在Python的Flask中使用WTForms表单框架的基础教程
- jQuery基于BootStrap样式实现无限极地区联动
- jquery中checkbox全选失效的解决方法
- Javascript 垃圾收集机制介绍理解
- js用typeof方法判断undefined类型
- 劣质电源祸害无穷
- 关于进程mDNSResponder.exe 总访问网络 附删除方法
- C#语言中的修饰符汇总