资讯专栏INFORMATION COLUMN

在js中如何判断一个对象是否为空

GT / 1437人阅读

摘要:网上已经有很多的回答了分别是中就是这么实现的中的这些办法在判断常规的对象的时候没有问题,,当一个对象为空的时候得到的答案也是预期的但是当对象中有作为键值的时候呢测试结果就会被误以为是空的虽然还有一个方法可以拿到,但是在正常的对象中他又为空了

网上已经有很多的回答了分别是

for in (jquery中就是这么实现的)
for of
JSON.stringify() == "{}"
Object.getOwnPropertyNames()
Object.keys()
Object.values()
Underscore.js中的isEmpty

这些办法在判断常规的对象的时候没有问题,,当一个对象为空的时候得到的答案也是预期的

但是
当对象中有symbol作为键值的时候呢???

测试:

结果:


就会被误以为是空的
虽然还有一个方法Object.getOwnPropertySymbols可以拿到,但是在正常的对象中他又为空了

虽然把他们组合起来就可以解决问题,但是有一个新的api叫Reflect.ownKeys(),可以更方便的解决

当然咋真正用的时候很少会那symbol去做一个对象的键值,但是在面试的时候,,这个问题可以说是高频问题了

以上。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101086.html

相关文章

  • 关于JSON.parse()和JSON.stringify()的性能小测试

    摘要:我们一般用来深拷贝,其过程说白了,就是利用将对象序列化字符串,再使用来反序列化还原对象。至于这行代码为什么能实现深拷贝,以及它有什么局限性等等,不是本文要介绍的。小结论能不用和就不用,采用替代方案且性能更优的。 JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了,就是利用 JSON.stringify 将js对象序列化(JSON字符串),再使...

    oogh 评论0 收藏0
  • 如何检查一个对象是否为空

    摘要:简化版如果有更好的方法欢迎留言请关注我的订阅号,不定期推送有关的技术文章,只谈技术不谈八卦 showImg(https://segmentfault.com/img/remote/1460000018733493?w=640&h=426); ⭐️ 更多前端技术和知识点,搜索订阅号 JS 菌 订阅 检查一个数组为空很容易,直接调用 length 方法即可,那么如何检查一个对象是否为空呢 ...

    mindwind 评论0 收藏0
  • 深入理解 Event Loop

    摘要:即使现在支持,由于没有多线程的机制,和执行线程只能通过来通信,而且由于没有锁,无法访问和对象。的单线程是指一个浏览器进程中只有一个的执行线程,即同一时刻内只会有一段代码在执行。与单线程如何实现异步设计了一个事件循环的方式。众所周知,JavaScript(以下简称 JS) 是单线程语言,在 html5 中增加了 web workers,web workers 是新开了线程执行的,那么 JS 还...

    Carbs 评论0 收藏0
  • js基础(一):判断类型

    摘要:注意类继承时的问题继承自方法中对象直接继承和间接继承的都会报解决的问题通常是让对象的手动指向自己将自己的类赋值给对象的属性基类不会报了原博参考,,,,判断为 js基础(二):构造函数与原型 一、常见实例 判断是否为对象 let obj = {} // 1.Object.prototype.toString if (Object.prototype.toString.call(obj...

    hightopo 评论0 收藏0
  • 这些Zepto实用的方法集

    摘要:对象字面量形式通过构造函数创建中是如何判断的呢判断是否为纯粹的对象,必须满足首先必须是对象不是对象并且原型要和的原型相等方法返回指定对象的原型即内部属性的值如果没有继承属性,则返回。 前言 时间过得可真快,转眼间2017年已去大半有余,你就说吓不吓人,这一年你成长了多少,是否荒度了很多时光,亦或者天天向上,收获满满。今天主要写一些看Zepto基础模块时,比较实用的部分内部方法,在我们日...

    caozhijian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<