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的isEmptyObject方法
此方法是jquery将2方法(for in)进行封装,使用时需要依赖jquery
var data = {}
var b =$.isEmptyObject(data);
alert(b); //true
4、Object.getOwnPropertyNames()方法
此方法是使用Object对象的getOwnPropertyNames方法,获取到对象中的属性名,存到一个数组中,返回数组对象,我们可以通过判断数组的length来判断此对象是否为空。
此方法不兼容IE8,其余未测试
var data = {}
var arr =Object.getOwnPropertyNames(data);
alert(arr.length === 0) //true
5、使用ES6的Object.keys()方法
与4方法类似,是ES6的新方法,返回值也是对象中属性名组成的数组
var data = {}
var arr = Object.keys(data);
alert(arr.length ==0) //true
有大佬说,for in循环只适合原型链为空对象的情况;使用Object.keys和Object.getOwnPropertyNames对symbol的key无效,建议使用Reflect.keys方法,有兴趣的同学可以动手测试。