我有一些代码只是应该遍历一个数组并用 javascript 将它们绘制到屏幕上。但是,如果数组大于一个元素,则会出现类型错误,对象没有方法 draw()。所以很自然地,我尝试将它放在一个 try catch 块中,如下所示:
try{
bulls[i].draw();
}catch(e){
console.log("Error");
console.log(bulls[i]);
console.log(e.message);
}
现在,当我在控制台中查看 Bulls[i] 并展开它时,它显示:
bullet {paper: Paper, setSize: function, isShot: function, isShotToTrue: function, lineRemove: function…}
draw: function (){
getCoords: function (){
isShot: function (){
isShotToTrue: function (){
lineRemove: function (){
paper: Paper
set: function (nx1, nx2, ny1, ny2){
setColor: function (r, g, b){
setSize: function (s){
setSpeedX: function (x1, coords){
update: function (){
__proto__: bullet
如您所见,对于公牛[i],平局已定义,但它声称不是?任何人都可以为我阐明这个问题吗?如果您需要更多代码或信息,请询问!
编辑:我把所有代码放在 JFiddle here上。要重现错误,您必须输入人,然后在植物或动物一词中快速按 ctrl+v。这很糟糕,它会尝试在屏幕上显示 2 个子弹。如果您在输入下一个单词之前等待子弹杀死屏幕上的任何单词,它不会因一颗子弹而失败。
这些类都在它们各自的文件中,在本例中是 bullet.js,它是通过以下方式添加到构造函数中的:
this.draw = function(){
lin = lin.draw();
return this;
}
我很乐意提供你们需要的任何其他信息。