Javascript 为什么控制台';log有一个属性(length),这个';长度';不会在foreach中输出吗?

Javascript 为什么控制台';log有一个属性(length),这个';长度';不会在foreach中输出吗?,javascript,prototypejs,Javascript,Prototypejs,这是我的密码: var obj = {}; [].push.call(obj, "a"); console.log(obj); //output:{0:"a",length:1} what length? [].forEach.call(obj, function(v, i, a) { console.log(i); //output: 0 //Although this obj had two attributes, but only echoed on

这是我的密码:

 var obj = {}; [].push.call(obj, "a"); 
 console.log(obj);
 //output:{0:"a",length:1} what length? 

 [].forEach.call(obj, function(v, i, a) {
     console.log(i);
    //output: 0
    //Although this obj had two attributes, but only echoed once. 
 });

非常感谢您的任何反馈。

原因很简单,它只迭代索引(以整数命名的属性),而不是所有属性。事实上,它确实需要
.length
属性来知道何时停止迭代:-)

,因为它只迭代索引(整数命名属性),而不是所有属性。事实上,它确实需要
.length
属性来知道何时停止迭代:-)

您认为您还可以提供一些关于您正在尝试执行的操作的上下文吗?我想这会帮助人们理解你的问题。谢谢你的帮助!你认为你也可以提供一些你想做的事情的背景吗?我想这会帮助人们理解你的问题。谢谢你的帮助!谢谢但我无法理解示例1为什么它有“长度”?因为
push()
.length
增加1,如果它不存在,则创建属性。非常感谢,然后我尝试了它!谢谢但我无法理解示例1为什么它有“长度”?因为
push()
.length
增加1,如果它不存在,则创建属性。非常感谢,然后我尝试了它!