我需要获取js对象属性计数。
我搜索并找到了这样的解决方案:
var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
var count = 0;
for (var k in foo) {
if (foo.hasOwnProperty(k)) {
++count;
}
}
问题:为什么需要条件if (foo.hasOwnProperty(k)) {
?
我认为这段代码必须始终正常,没有这个条件。
我错了?
答案 0 :(得分:3)
请参阅:How to efficiently count the number of keys/properties of an object in JavaScript?
是的,hasOwnProperty方法在这里真的很简单。
无论如何,为什么你需要获得属性?我担心你正在以一种糟糕的方式解决问题。
答案 1 :(得分:2)
某些对象具有系统添加的属性(即原型)。
你通常不想数数。您询问的条件将确保您只计算属于您的对象本身的属性。
因此,如果您打算创建一个将返回任何对象的计数的函数,则可能更好地包含该条件,否则您不一定需要。
答案 2 :(得分:1)
这是为了防止你计算继承的成员。
如果你这样做(不可取):
Object.prototype.x = 1;
然后这给出了4的计数:
var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
var count = 0;
for (var k in foo) {
++count;
}
但是if (foo.hasOwnProperty(k))
它仍然会给出3。