如何检查javascript有多少直接属性对象?我想知道一个对象中的直接属性的数量,而不是原型链中。有没有办法这样做?
答案 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(array); // ["0", "1", "2"]
Object.getOwnPropertyNames
返回直接驻留在对象上的所有可枚举和不可枚举属性的数组(即不会检查原型链)。
Object.keys(array); // ["0", "1", "2", "length"]
使用for…in
循环,您可以迭代对象中的所有可枚举属性,包括其原型链。在这种情况下,这恰好类似于Object.keys
,但是一旦你处理原型链,这就不再适用了。
for (const property in array) {
console.log(property); // "0", "1", "2"
}
确定对象具有多少属性就像在结果数组上访问.length
或在for…in
循环中递增属性计数器一样简单。