了解数组中的对象以及长度特性如何在对象上工作
Understanding objects in a array and how the length property works on objects
看看下面的代码:
var a = new Array(); // or just []
a[0] = 0
a['one'] = 1;
a['two'] = 2;
a['three'] = 3;
for (var k in a) {
if (a.hasOwnProperty(k)) {
alert('key is: ' + k + ', value is: ' + a[k]);
}
}
alert(a.length); // 1 is printed
现在,我得到了以下对正在打印的1的解释;
奇怪的是,据报道长度为1,但却打印了四个键。这是因为我们同时操作数组元素和底层对象。
底层对象?对不起,我不太明白,有人能解释一下吗?这个底层对象是什么?有人能强调一下吗?请注意,我的问题不是直接为什么要打印1,而是问一个稍微宽泛和困难的问题,那就是底层对象是什么?
发现示例HERE
数组的length
属性只是数组中最大整数索引之后的下一个整数。
例如,如果您声明以下数组:
var arr = [];
arr[1234] = 'Hello world';
那么,arr.length
将等于1235。
添加任何对象属性都不会影响它:
arr['one'] = '1';
arr['two'] = '2';
arr['three'] = '3';
console.log(arr.length); // still 1235
此外,不将此类属性分配给数组是正确的。
同样重要的是,如果你现在决定JSON.stringify
这个阵列,你会得到:
[null, null, null, null, ... 1250 more nulls ..., "Hello world"]
无one
、two
、three
等
相关文章:
- 读取在具有IE的工作程序中生成的对象URL
- 我怎样才能让jQuery即使在尚未创建的对象上也能工作
- JSON.stringify没有'在更改的对象上无法按预期工作.如何处理
- 如何让我的正则表达式代码在我的dojo cellWidget对象上工作
- dropable的Over事件是't工作正常,在可拖动对象被拖放到贪婪的可拖动对象上并再次拖动后
- 地图如何在 Ecmascript 6 中使用对象键工作
- 了解 JavaScript 对象实例或工作流
- JavaScript 返回对象未按预期工作
- 如何让、要求和原型协同工作以在 javascript 中制作对象
- 谷歌应用程序脚本-正在尝试使用getUrl.TypeError:在对象工作表中找不到函数getUrl
- 一个对象怎么能像返回自身和另一个对象一样工作
- "键“;jQuery中的对象无法正常工作
- 对象引用的隐式传递是如何工作的
- dojo类对象的工作原理
- app.use(restify.bodyParser())无法工作,因为req对象为空
- 难以理解JavaScript中的基本对象工作
- jquery .after 不对非追加对象工作
- Couchdb _design/doc/_update/push未作为对象工作
- 如何使此CoffeeScript对象工作
- 事件链是如何为多个对象工作的