// Speed up calls to hasOwnProperty
var hasOwnProperty = Object.prototype.hasOwnProperty;
function isEmpty(obj) {
// null and undefined are "empty"
if (obj == null) return true;
// Assume if it has a length property with a non-zero value
// that that property is correct.
if (obj.length > 0) return false;
if (obj.length === 0) return true;
// Otherwise, does it have any properties of its own?
// Note that this doesn't handle
// toString and valueOf enumeration bugs in IE < 9
for (var key in obj) {
if (hasOwnProperty.call(obj, key)) {return false;}
}
return true;
}
Examples:
isEmpty(""); // true
isEmpty([]); // true
isEmpty({}); // true
isEmpty({length: 0, custom_property: []}); // true
isEmpty("Hello"); // false
isEmpty([1,2,3]); // false
isEmpty({test: 1}); // false
isEmpty({length: 3, custom_property: [1,2,3]}); // false
jQuery.isEmptyObject should be listed here too:
if ($.isEmptyObject(obj)) {
// do something
}
Комментариев нет:
Отправить комментарий