-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
如何判断一个对象是否为空对象?即是否是 {} 这样的对象。
方法 1:ES6 Object.keys 判断长度
const isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';
const isEmptyObject = obj => isObject(obj) ? Object.keys(obj).length === 0 : false;
isEmptyObject({}); // true
isEmptyObject({a: 1}); // false方法 2:for in 循环判断
const isEmptyObject = obj => {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
return false
}
}
return true;
};
isEmptyObject({}); // true
isEmptyObject({a: 1}); // false方法 3:方法 2 的变种
Object.defineProperty(Object.prototype, 'isEmptyObject', {
writable: false,
enumerable: false,
configurable: false,
value: function() {
for (let key in this) {
if (this.hasOwnProperty(key)) {
return false
}
}
return true;
}
});
// 注意:字面量对象调用时要将表达式用小括号包起来
({}.isEmptyObject()); // true
({a: 1}.isEmptyObject()); // false
let obj = {};
obj.isEmptyObject(); // true方法 4:JSON.stringify 转换判断
const isEmptyObject = obj => JSON.stringify(obj) === '{}';
isEmptyObject({}); // true
isEmptyObject({a: 1}); // falseMetadata
Metadata
Assignees
Labels
No labels