文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JS判断空对象的方法有哪些

2023-06-29 04:31

关注

小编给大家分享一下JS判断空对象的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Object.keys

Object.keys()方法是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组

  var obj = {    name: "cxy",    age: "19"  };   var objArray = Object.getOwnPropertyNames(obj);  console.log(objArray)

JS判断空对象的方法有哪些

可以看到objArray为返回值,且返回值为以对象内的属性为内容的数组

Object.getOwnPropertyNames

Object.getOwnPropertyNames()方法同样是也是以对象为参数,返回一个包含该对象内所匹配的属性和方法的数组

大家在这里会发出疑问,这两个有啥区别?Object.getOwnPropertyNames()可以返回所有的属性,而Object.keys()只能返回可枚举属性,诶?到这里大家又疑惑了可枚举属性又是个啥?不要着急,我来解释一下什么叫可枚举属性

可枚举属性

可枚举或者不可枚举属性是对象内部通过可枚举标志enumerable来进行区分的,在默认情况下,我们obj.name = "cxy"为对象新增了一个属性后,其可枚举标志enumerable为ture,而当其值为false的时候它是不可枚举的,当我们对对象进行for,Object.keys(),JSON.stringify()的时候不可枚举属性是找不出来的,我们可以理解为不可枚举属性是隐身

现在我们拿上面的Object.getOwnPropertyNamesObject.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))

JS判断空对象的方法有哪些

hasOwnProperty

hasOwnProperty()是用来判断某对象是否含有某属性的,其参数为属性名

  var stuObj = {    name: "cxy"  }  console.log(stuObj.hasOwnProperty('name'))

JS判断空对象的方法有哪些

但是这里要注意一个问题就是,hasOwnProperty()判断继承属性的时候会返回false,继承属性即对象从原型对象上继承的属性,比如说toString

盘点判空方法

JSON.stringify判空

这种方式是比较简单的了,使用JSON.stringify将对象转换为字符串,再通过等于判断即可得到对象是否为空的布尔值

let obj = {    name: "cxy"}console.log(JSON.stringify(obj) == '{}')

for in判空

使用for in的话可以当触发循环的时候返回false没有触发循环的时候代表对象为空返回ture

let forNull = (items) => {    for (let item in items) {        return false    }    return true}

Object.getOwnPropertyNames判空

这里使用了上文提及的Object.getOwnPropertyNames,将返回的数组的length作为判断依据。

let stuArray = Object.getOwnPropertyNames(obj)console.log(stuArray.length === 0)

Object.keys()判空

和上个方法一样,使用数组作为判断依据

let stuArray = Object.getOwnPropertyNames(obj)console.log(stuArray.length === 0)

hasOwnProperty判空

使用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)=="{}"))

以上是“JS判断空对象的方法有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯