假设我宣布

var ad = {}; 

如何检查该对象是否包含用户定义的属性?


当前回答

如果你使用的是underscore.js,那么你可以使用_。isEmpty功能:

var obj = {};
var emptyObject = _.isEmpty(obj);

其他回答

如果你愿意使用lodash,你可以使用some方法。

_.some(obj) // returns true or false

请看这个jsbin的小例子

使用jQuery,你可以使用:

$.isEmptyObject(obj); // Returns: Boolean

从jQuery 1.4开始,这个方法既检查对象本身的属性,也检查从原型继承的属性(因为它不使用hasOwnProperty)。

随着ECMAScript第五版在现代浏览器(IE9+, FF4+, Chrome5+, Opera12+, Safari5+),你可以使用内置的对象。键的方法:

var obj = { blah: 1 };
var isEmpty = !Object.keys(obj).length;

或者简单的JavaScript:

var isEmpty = function(obj) {
               for(var p in obj){
                  return false;
               }
               return true;
            };

ES6函数

/**
 * Returns true if an object is empty.
 * @param  {*} obj the object to test
 * @return {boolean} returns true if object is empty, otherwise returns false
 */
const pureObjectIsEmpty = obj => obj && obj.constructor === Object && Object.keys(obj).length === 0

例子:


let obj = "this is an object with String constructor"
console.log(pureObjectIsEmpty(obj)) // empty? true

obj = {}
console.log(pureObjectIsEmpty(obj)) // empty? true

obj = []
console.log(pureObjectIsEmpty(obj)) // empty? true

obj = [{prop:"value"}]
console.log(pureObjectIsEmpty(obj)) // empty? true

obj = {prop:"value"}
console.log(pureObjectIsEmpty(obj)) // empty? false

很晚的回答,但这就是你处理原型的方法。

Array.prototype.Any = function(func) {
    return this.some(func || function(x) { return x });
}

Object.prototype.IsAny = function() {
    return Object.keys(this).Any();
}

如果你使用的是underscore.js,那么你可以使用_。isEmpty功能:

var obj = {};
var emptyObject = _.isEmpty(obj);