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,如果它不存在,则创建属性。非常感谢,然后我尝试了它!