Spe*_*cer 32 javascript foreach for-loop
我正在使用canvas标签制作一个Javascript游戏,我正在使用增强的for循环来更新玩家位置.
简单来说:
var actors = new Array();
var player = new Actor(0, 0, img);
actors[0] = player;
function update_positions() {
//position 1
for(var a in actors) {
//position2
a.xpos += a.xvel;
a.ypos += a.yvel;
}
}
Run Code Online (Sandbox Code Playgroud)
就在位置1的for循环之外,我可以访问actors [0] .xvel的正确值.在位置2的for循环内,a.xvel未定义.有人可以向我解释发生了什么吗?
CMS*_*CMS 87
该for...in
语句用于迭代对象属性,通过查看代码似乎actors
是一个数组(您使用索引设置初始元素0
).
此语句还将爬行原型链,如果已扩展,Array.prototype
那些属性将被迭代,并且也不保证迭代的顺序.
我建议你避免问题,并使用正常的for循环迭代:
for (var i = 0; i < actors.length; i++) {
actors[i].xpos += actor.xvel;
actors[i].ypos += actor.yvel;
}
Run Code Online (Sandbox Code Playgroud)
如果我错了,并且actors
不是数组,我建议您使用该hasOwnProperty
方法,以确保该属性存在于对象本身,而不是在原型链的某处:
for (var name in object) {
if (object.hasOwnProperty(name)) {
//
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27134 次 |
最近记录: |