最近在找工作的时候就有被问到一个基础的问题,就是怎么判断一个对象是否为空,但是当时直说了一种方法,面试官就问还有没有其他方法,所以现在来总结一下有哪些方法可以判断一个对象为空
1、将对象转为JSON,然后判断是等于为{}
var obj1 = {}
var obj2 = new Object()
JSON.stringify(obj1); // {}
JSON.stringify(obj2); // {}
2、通过for in判断对象是否存在属性
/**
* 判断对象是否为空对象
* @param obj --- 需要判断的对象
*/
function isEmptyObject(obj) {
for (const key in obj) {
return true;
}
return false;
}
isEmptyObject({}); // true
isEmptyObject({ name: "yusong" }); // false
3、jQuery提供的isEmptyObject() API
var obj1 = {};
var obj2 = {name: "yusong"};
$.isEmptyObject(obj1); // true
$.isEmptyObject(obj2); // false
4、Object.getOwnPropertyNames()返回的一个包含对象属性名的数组,通过判断该数组的长度来判断对象是否为空
var obj1 = {};
var obj2 = {name: "yusong"};
Object.getOwnPropertyNames(obj1).length; // 0
Object.getOwnPropertyNames(obj2).length; // 1
5、ES6中的Object.key()也是返回一个包含对象属性名的数组,通过判断数组的长度来判断对象是否为空
var obj1 = {};
var obj2 = {name: "yusong"};
Object.keys(obj1).length; // 0
Object.keys(obj2).length; // 1
以上是我总结的判断一个对象是否为空的5总方法,写文章更多是为了自己的知识的一个总结,其中可能会出现错误或者还有其他更好的方案实现,欢迎指出