解决方案

使用hasOwnProperty判断

Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};
// Get the size of an object
var size = Object.size(myObj);

“Object.keys()”获取仅包含可枚举属性名称的数组,
“Object.getOwnPropertyNames()”获取包含不可枚举属性的名称。

function size(obj, enumerablesOnly) {
    return enumerablesOnly === false ?
        Object.getOwnPropertyNames(obj).length :
        Object.keys(obj).length;
}

测试:

var myObj = Object.create({}, {
    getFoo: {},
    setFoo: {}
});
myObj.Foo = 12;
var myArr = [1,2,5,4,8,15];
console.log(size(myObj));        // Output : 1
console.log(size(myObj, true));  // Output : 1
console.log(size(myObj, false)); // Output : 3
console.log(size(myArr));        // Output : 6
console.log(size(myArr, true));  // Output : 6
console.log(size(myArr, false)); // Output : 7
JavaScript对象的长度

如何获取JavaScript对象的长度

var myObject = new Object();
myObject["firstname"] = "Hello";
myObject["lastname"] = "World";
myObject["age"] = 123;

如何统计JavaScript对象中属性的数量?

日期:2020-03-24 23:22:50 来源:oir作者:oir