那么,为什么这会导致0,我如何找到实际大小?
var array = [];
array["foo"] = "bar";
array["bar"] = "foo";
document.write(array.length);
Run Code Online (Sandbox Code Playgroud)
首先,长度为0,因为项目数array为0.
当您执行此语法时,array["foo"] = "bar"您将创建一个名为foovalue的属性bar.由于您尚未向Array添加任何内容,因此长度仍为0,您只需在Array上设置新属性即可
这里的工作版本:http://jsfiddle.net/VyjJD/3/
var array = [];
array["foo"] = "bar";
array["bar"] = "foo";
array.bin = function() { return "bin"; };
array[0] = "bar";
array[1] = "foo";
array[2] = "bin";
array[3] = "bat";
var props = 0;
for (key in array)
props++;
document.write(array.length + "<br />"
+ props + "<br />"
+ (array.foo == array["foo"]) + "<br />"
+ array.bar + "<br />"
+ array.bin());
Run Code Online (Sandbox Code Playgroud)
请注意,array.length = 4但这props = 7是Array中的所有属性和项目数.
由于这是一个由属性组成的对象,并采用键/值对的形式(概念上类似于关联数组或哈希表),您必须执行以下操作:
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
var array = [];
array["foo"] = "bar";
array["bar"] = "foo";
var size = Object.size(array);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9081 次 |
| 最近记录: |