问题描述
没有简单的答案,因为Object
JavaScript
中的每个对象都派生自“自动包含许多属性”,而您获得的确切属性集取决于特定的解释器以及在您的解释器之前执行的代码。因此,您必须以某种方式将您定义的那些与您“免费”获得的那些分开。
这是一种方法:
var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
Object.prototype.foobie = 'bletch'; // add property to foo that won't be counted
var count = 0;
for (var k in foo) {
if (foo.hasOwnProperty(k)) {
++count;
}
}
alert("Found " + count + " properties specific to foo");
第二行显示了其他代码如何向所有Object
派生类添加属性。如果您删除循环内的检查,属性计数将至少上升到 4。在除此代码之外还有其他 JavaScript
的页面上,如果其他代码也修改了原型hasOwnProperty()
,则它可能高于 4 。Object
解决方法
假设我在 JavaScript 中有以下对象:
var object = {
"key1": "value1","key2": "value2","key3": "value3"
};
如何找出对象中存在多少个值?