循环中…的JavaScript产生了奇怪的结果
我的目标如下:循环中…的JavaScript产生了奇怪的结果,javascript,jquery,for-loop,Javascript,Jquery,For Loop,我的目标如下: var r = { obj: $(this), children: $(this).children(), panes: $('.rotatorPane', $(this)), tagNames : [], captions: [], subcaptions: [] }; $(此)指以下部门: <div class="myRotator"> <div class="rotatorPane">
var r = {
obj: $(this),
children: $(this).children(),
panes: $('.rotatorPane', $(this)),
tagNames : [],
captions: [],
subcaptions: []
};
$(此)
指以下部门:
<div class="myRotator">
<div class="rotatorPane">
</div>
<div class="rotatorPane" id="pane3">
</div>
<img src="img/1.jpg" alt="pane 1" class="rotatorPane" data-caption="Lorem Ipsum" data-subcaption="Dolor sit amet" />
</div>
输出按预期开始:
0
1
2
但是我得到了一堆方法名作为输出:
length
prevObject
context
selector
constructor
init
jquery
size
toArray
get
...etc
有人知道为什么会发生这种情况吗?不要将
用于。。。在
中对数组或类似数组的对象执行操作。使用数字索引变量
for (var i = 0; i < r.panes.length; ++i) {
var pane = r.panes[i];
// ...
}
for(变量i=0;i
用于。。。在中,表单用于迭代对象的属性-所有属性。当您要迭代数组的索引属性(或者,再次,您将其视为数组的内容)时,请始终使用数字索引
在本例中,所讨论的类似数组的对象是一个jQuery对象,除了数字索引属性之外,它还具有各种属性。不要将
用于。。。在
中对数组或类似数组的对象执行操作。使用数字索引变量
for (var i = 0; i < r.panes.length; ++i) {
var pane = r.panes[i];
// ...
}
for(变量i=0;i
用于。。。在中,表单用于迭代对象的属性-所有属性。当您要迭代数组的索引属性(或者,再次,您将其视为数组的内容)时,请始终使用数字索引
在本例中,所讨论的类似数组的对象是一个jQuery对象,除了数字索引属性之外,它还具有各种属性。我认为每个循环都应该使用jQuery,由于jquery将自己的方法和内容添加到对象中,您可能无法使用hasOwnProperty,因此我认为您应该为每个循环使用jquery,因为jquery将自己的方法和内容添加到对象中,因此您可能无法使用hasOwnProperty,因为只有在检索对象的所有键时才能使用in。对于那些原型没有被修改的简单数组,这一点大部分都是有效的,除了迭代的顺序不能保证(特别是如果你把项目插入到数组的中间),你就不应该真正使用它。嗯,是的,但是我个人尽量回避那些“主要工作”的编码实践。当有一个简单的选择总是有效的时候。另外,对于某些代码,您永远不知道它的环境何时会发生变化,从而使数组原型获得一些额外的iterable属性。是的,有一个
hasOwnProperty()
测试,但是如果你不得不这么麻烦的话,这似乎没有什么意义。如果你读了我的评论,你会发现我的观点是,即使有一种方法是有效的,你仍然不应该使用它。哦,好吧,我明白你的意思了。我不是想批评你的陈述(这是完全正确的),而是想阻止任何人认为,是为了。。。in
只是一个“顽皮”而不是一个很坏的主意:-)for in
应该只在检索对象的所有键时使用。对于那些原型没有被修改的简单数组,这一点大部分都是有效的,除了迭代的顺序不能保证(特别是如果你把项目插入到数组的中间),你就不应该真正使用它。嗯,是的,但是我个人尽量回避那些“主要工作”的编码实践。当有一个简单的选择总是有效的时候。另外,对于某些代码,您永远不知道它的环境何时会发生变化,从而使数组原型获得一些额外的iterable属性。是的,有一个hasOwnProperty()
测试,但是如果你不得不这么麻烦的话,这似乎没有什么意义。如果你读了我的评论,你会发现我的观点是,即使有一种方法是有效的,你仍然不应该使用它。哦,好吧,我明白你的意思了。我不是想批评你的陈述(这是完全正确的),而是想阻止任何人认为,是为了。。。in
只是一个“顽皮”而不是一个真正的坏主意:-)