js判断一个对象为空的几种方法

2,984 阅读1分钟

最近在找工作的时候就有被问到一个基础的问题,就是怎么判断一个对象是否为空,但是当时直说了一种方法,面试官就问还有没有其他方法,所以现在来总结一下有哪些方法可以判断一个对象为空

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总方法,写文章更多是为了自己的知识的一个总结,其中可能会出现错误或者还有其他更好的方案实现,欢迎指出