JS判断空对象有什么方法,用到哪些知识点
Admin 2022-10-31 群英技术资讯 1035 次浏览
在这篇文章中,我们来学习一下“JS判断空对象有什么方法,用到哪些知识点”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。在盘点JS判空方法之前我们先来了解下面的三个方法。
Object.keys()方法是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组
var obj = {
name: "cxy",
age: "19"
};
var objArray = Object.getOwnPropertyNames(obj);
console.log(objArray)

可以看到objArray为返回值,且返回值为以对象内的属性为内容的数组
Object.getOwnPropertyNames()方法同样是也是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组
大家在这里会发出疑问,这两个有啥区别?Object.getOwnPropertyNames()可以返回所有的属性,而Object.keys()只能返回可枚举属性,诶?到这里大家又疑惑了可枚举属性又是个啥?不要着急,我来解释一下什么叫可枚举属性
可枚举或者不可枚举属性是对象内部通过可枚举标志enumerable来进行区分的,在默认情况下,我们obj.name = "cxy"为对象新增了一个属性后,其可枚举标志enumerable为ture,而当其值为false的时候它是不可枚举的,当我们对对象进行for,Object.keys(),JSON.stringify()的时候不可枚举属性是找不出来的,我们可以理解为不可枚举属性是隐身的
现在我们拿上面的Object.getOwnPropertyNames和Object.keys()进行实战举例,我们通过defineProperty来为对象添加age属性,因为该方法可以设置枚举标志,这里设置为false,可以看到下面两个不同的返回结果
var stuObj = {
name: "cxy"
}
Object.defineProperty(stuObj, 'age', {
value: "18",
enumerable: false
});
console.log(Object.keys(stuObj))
console.log(Object.getOwnPropertyNames(stuObj))

hasOwnProperty()是用来判断某对象是否含有某属性的,其参数为属性名
var stuObj = {
name: "cxy"
}
console.log(stuObj.hasOwnProperty('name'))

但是这里要注意一个问题就是,hasOwnProperty()判断继承属性的时候会返回false,继承属性即对象从原型对象上继承的属性,比如说toString
这种方式是比较简单的了,使用JSON.stringify将对象转换为字符串,再通过等于判断即可得到对象是否为空的布尔值
let obj = {
name: "cxy"
}
console.log(JSON.stringify(obj) == '{}')
使用for in的话可以当触发循环的时候返回false没有触发循环的时候代表对象为空返回ture
let forNull = (items) => {
for (let item in items) {
return false
}
return true
}
这里使用了上文提及的Object.getOwnPropertyNames,将返回的数组的length作为判断依据。
let stuArray = Object.getOwnPropertyNames(obj) console.log(stuArray.length === 0)
和上个方法一样,使用数组作为判断依据
let stuArray = Object.getOwnPropertyNames(obj) console.log(stuArray.length === 0)
使用hasOwnProperty是使用for循环将元素进行判断如果含有则返回false说明不为空,反之则为空
let forNull = (items) => {
for (let item in items) {
if(items.hasOwnProperty(item)){
return false
}
}
return true
}
这种方法很不推荐,但也确实是最容易想到的,主要使用JSON.stringify()这个方法对对象进行强转,贴出来仅供一看:
var a={};
var b=new Object();
console.log("对象字面量的比较结果:"+(JSON.stringify(a)=="{}"))
console.log("构造函数的比较结果:"+(JSON.stringify(b)=="{}"))
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了eslint在vue中如何使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
这篇文章要实现的需求是打开其他项目并传数据的的内容,那么vue如何向其他项目页面传数据?下面给大家介绍不跨域和跨域这两种情况下的方法,感兴趣的朋友接下来跟随小编来参考一下吧。
时钟是我们查看时间的一种工具,很多人家家里都会摆放一个时钟,那么我们用代码能实现一个时钟效果吗?答案是可以用的,这篇文章主要教大家用JS代码配置CSS样式来实现一个动态的时钟效果,效果如下图所示,下面我们一起来学习下。
本文给大家介绍Vue 实现穿梭框功能,代码分为css,html和js代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
这篇文章主要为大家详细介绍了jquery实现全选功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008