检查对象属性的数量

时间:2016-07-26 21:25:23

标签: javascript oop

如何检查javascript有多少直接属性对象?我想知道一个对象中的直接属性的数量,而不是原型链中。有没有办法这样做?

2 个答案:

答案 0 :(得分:0)

您可以生成一系列属性,然后取长度

var x = {
    x1 : 1,
    x2 : 2,
    x3 : 3,
    x4 : 4
};
console.log(Object.keys(x).length); // => 4

答案 1 :(得分:0)

这取决于您要衡量的哪个属性。请考虑以下情形:

const array = ["some", "values", "here"];

Object.keys

Object.keys返回直接驻留在对象上的所有可枚举属性的数组(即不会检查原型链)。

Object.keys(array); // ["0", "1", "2"]

Object.getOwnPropertyNames

Object.getOwnPropertyNames返回直接驻留在对象上的所有可枚举和不可枚举属性的数组(即不会检查原型链)。

Object.keys(array); // ["0", "1", "2", "length"]

for ... in loop

使用for…in循环,您可以迭代对象中的所有可枚举属性,包括其原型链。在这种情况下,这恰好类似于Object.keys,但是一旦你处理原型链,这就不再适用了。

for (const property in array) {
    console.log(property); // "0", "1", "2"
}

确定对象具有多少属性就像在结果数组上访问.length或在for…in循环中递增属性计数器一样简单。