Javascript 如何判断一个对象是否为空对象 {}?

275 阅读1分钟

根据 for...in 遍历对象,如果存在则返回true,否则返回false。(false为空对象)

const checkNullObject = (parameter) => {
    for (let i in parameter) {
        return true;
    }
    return false;
}

使用 JSON.stringify() Reflect.ownKeys()方法来判断(true为空对象)

// 当遇到Symbol类型的,会判断失败
const checkNullObject = (parameter) => {
    return JSON.stringify(parameter) === '{}';
}

const checkNullObject = (parameter) => {
    return JSON.stringify(parameter) === '{}' && Reflect.ownKeys(parameter).length === 0;
}

使用 Object.keys() Reflect.ownKeys()来进行判断(true为空对象)

Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组。

// 当遇到Symbol类型的,会判断失败
const checkNullObject = (parameter) => {
    return parameter && Object.keys(parameter).length === 0 && parameter.constructor === Object;
}

const checkNullObject = (parameter) => {
    return parameter && Object.keys(parameter).length === 0 && Reflect.ownKeys(parameter).length === 0;
}

使用 Object.getOwnPropertyNames() Object.getOwnPropertySymbols方法(true为空对象)

使用Object对象的getOwnPropertyNames方法,获取到对象中的属性名,存到一个数组中,返回数组对象

const checkNullObject = (parameter) => {
    return parameter && Object.getOwnPropertyNames(parameter).length === 0 && Object.getOwnPropertySymbols(parameter).length === 0;
}

使用 Reflect.ownKeys()方法(true为空对象)

const checkNullObject = (parameter) => {
    return parameter && Reflect.ownKeys(parameter).length === 0;
}
const vv = { [Symbol()]: 'vv' }

checkNullObject(null)
checkNullObject(undefined)
checkNullObject('')
checkNullObject(new String())
checkNullObject(new Date())