【发布时间】:2015-03-24 08:55:43
【问题描述】:
我目前正在做一个小项目,以学习 Js 和 OOP。但是我有一个问题,让我解释一下不同的步骤:
1) 我的构造函数:
function Ammo(ammoId,posX,posY){
this.id=ammoId;
this.x=posX;
this.y=posY;
$('body').append('<div class="ammo ammo'+this.id+'"></div>');
}
2) 原型:
Ammo.prototype.position = function(){
$('.ammo'+this.id).css({
'top': this.y+"px",
'left': this.x+"px"
});
}
Ammo.prototype.ammomove = function(){
this.y-=1;
this.position();
}
3) 调用:
ammo=[];
var a=1;
function createAmmo(){
var ammoX=main.x;
var ammoY=main.y;
ammo[a] = new Ammo(a, ammoX, ammoY);
ammo[a].position();
var animAmmo= setInterval("ammo["+a+"].ammomove()",5);
a++;
}
createAmmo();
我的程序运行良好。但是当我用这种语法声明我的数组时:
var ammo = [];
它不起作用,我有错误“未定义弹药”,而这有效:
ammo = [];
有人有想法吗?谢谢!
编辑:这是我的 JsFiddle:https://jsfiddle.net/seabon/c057f1oj/
按空格键调用 createAmmo()
【问题讨论】:
-
错误究竟来自哪里?检查代码中对“弹药”的引用。另外,“弹药”是否应该在设计上是全球性的?
-
只是另一个集团的 x 和 y 位置。看看这个:jsfiddle.net/seabon/c057f1oj
标签: javascript arrays scope declaration