扫码关注官方订阅号
这个是我的判断方法,大家还有别的判断方法吗?
业精于勤,荒于嬉;行成于思,毁于随。
看你对对象为空的定义如果判读对象是不是undefined/null那么直接使用if语句就可以
var obj; if(!obj){ console.log("object is null or undefined"); }
如果判断对象没有任何属性这个就不好弄了使用for...in能够遍历可枚举属性,包括prototype中的Object.keys(ES2015)值遍历自有的可枚举属性但是对象的属性也可以通过设置enumerable=false为不可枚举的,那么通过上面的方法你就无法判断是否具有某个属性了
for...in
Object.keys(ES2015)
$.isEmptyObject();方法也是检查可枚举的属性
$.isEmptyObject();
所以具体问题还是要具体分析,根据你的业务场景来没有特殊的设置$.isEmptyObject();Object.keys()for...in都可以使用
Object.keys()
$.isEmptyObject(batchCheckedstudent);
谢邀~
function isEmptyObject(obj){ for(var key in obj){ return false; }; return true; };
你的也不是不可以,但是对于含有不可遍历对象的但是下面这种方法,对于只含有不可遍历属性的对象工作也不正常,你的也不能正常工作。
function isEmpty(obj) { var key; for(key in obj){ if(obj.hasOwnProperty(key)){ return false; } } return true; }
今天也遇到了这个问题 我用的是getOwnPropertyNames然后判断长度的办法 我感觉如果使用一次这样比较方便 一行就能解决 如果用一次以上的话我感觉jQuery的实现方式最好
看到上面提到不能检测enumerable=false的对象,补充一种方案,能够解决有属性为enumerable=false的
enumerable=false
function isEmptyObject(obj){ return Object.getOwnPropertyNames(obj).length === 0; }
楼上都说得很全了,补充一下:1,JSON.stringify(obj)中,如果obj本来是空的,又继承了一个非空的对象那么结果也会是“{}”, 2,一般来说只要没用Object.defineProperty定义 enumerable为false ,for..in足够了,之所以说一般,是因为默认的对象的"toString"属性都是不可枚举的(但是几乎不考虑)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
看你对对象为空的定义
如果判读对象是不是undefined/null
那么直接使用if语句就可以
如果判断对象没有任何属性这个就不好弄了
使用
for...in能够遍历可枚举属性,包括prototype中的Object.keys(ES2015)值遍历自有的可枚举属性但是对象的属性也可以通过设置enumerable=false为不可枚举的,那么通过上面的方法你就无法判断是否具有某个属性了
$.isEmptyObject();方法也是检查可枚举的属性所以具体问题还是要具体分析,根据你的业务场景来
没有特殊的设置
$.isEmptyObject();Object.keys()for...in都可以使用
$.isEmptyObject(batchCheckedstudent);
谢邀~
你的也不是不可以,但是对于含有不可遍历对象的
但是下面这种方法,对于只含有不可遍历属性的对象工作也不正常,你的也不能正常工作。
今天也遇到了这个问题 我用的是getOwnPropertyNames然后判断长度的办法 我感觉如果使用一次这样比较方便 一行就能解决 如果用一次以上的话我感觉jQuery的实现方式最好
看到上面提到不能检测
enumerable=false的对象,补充一种方案,能够解决有属性为enumerable=false的楼上都说得很全了,补充一下:
1,JSON.stringify(obj)中,如果obj本来是空的,又继承了一个非空的对象那么结果也会是“{}”,
2,一般来说只要没用Object.defineProperty定义 enumerable为false ,for..in足够了,
之所以说一般,是因为默认的对象的"toString"属性都是不可枚举的(但是几乎不考虑)