剪切有关代码如下:var ballList=new Array();     //全局变量
var boardList=new Array();     //全局变量
var collide;               //全局变量 function collide(ballList,boardList,canvasId,canvasWidth,canvasHeight,gravity)
   {
 this.ballList=ballList;
 this.boardList=boardList;
 this.canvasId=canvasId;
 this.canvasWidth=canvasWidth;
 this.canvasHeight=canvasHeight;
 this.gravity=gravity;
   }collide.prototype.upBallDate=function(){
        var m=this.ballList.length;               
        ............................
        ............................
}
$(function(){$('#button_began').click(gameInit);});//点击button按钮触发gameInit函数function gameInit() {                    //在 gameInit函数中,实例化了collide的一个象      
            ..................
            ..................
            collide=new collide(ballList,boardList,"canvas_main",600,300,0.098);  // ballList与boardList数组都已经存储了数据,并验证无误      
            ...................
}      报错入下:this.ballList is undefined
[在此错误处中断] var m=this.ballList.length;   

解决方案 »

  1.   

    经验证collide=new collide(ballList,boardList,"canvas_main",600,300,0.098); 执行成功,collide对象实例化成功
      

  2.   

    <input name="btn" type="button" id="btn" value="dian" />
    <script>
    var arr=new Array("a","b","c");
    var aa;
    function a(ar){
    this.str=ar;
    }a.prototype.b=function(){
    return this.str.length;
    };$(function(){$('#btn').click(gameInit);});//点击button按钮触发gameInit函数function gameInit() { 
    aa=new a(arr);
    alert(aa.b())//值取到了,=3
    }//仿照你的写了一个,没找到问题,LZ看看还有什么代码没贴出来
    </script>
    </body>
      

  3.   

    没看出有什么错误来
    但是你的全局变量的名称和你的函数名 包括你的变量名用的都是同一个collide 难道楼主没有考虑后果么
      

  4.   

    都是些 歧义声明 不要到处用一样的 名称来定义collide=new collide(ballList,boardList,"canvas_main",600,300,0.098); 这个貌似已经覆盖了全局的 collide 你前面应该加个 var是一个类你前面要大写开始
      

  5.   

    最终解决如下:(已将对象名由collide改为cld)
    ①查出gameInit()中$('body').everyTime('10ms',cld.upBallDate);有问题。$(function(){$('#button_began').click(gameInit);});//点击button按钮触发gameInit函数function gameInit() { //在 gameInit函数中,实例化了collide的一个象   
       ..................
       ..................
       collide=new collide(ballList,boardList,"canvas_main",600,300,0.098); // ballList与boardList数组都已经存储了数据,并验证无误   
       ...................
      $('body').everyTime('10ms',cld.upBallDate);  //查出这句有问题
    }  ②验证将$('body').everyTime('10ms',cld.upBallDate); 改成$('body').everyTime('10ms',cld.upBallDate()); 将不再报原来的错误,但报错jQuery.timer插件有问题③最终将$('body').everyTime('10ms',cld.upBallDate); 改成$('body').everyTim('10ms',useUpBallDate);并再定义一个函数function useUpBallDate() {cld.upBallDate();}
    这样就整个脚本就运行正常了,所有功能都能实现,但是每运行一次还是会报错this.ballList[j] is undefined
      

  6.   

    this.ballList=ballList;  这样会不会很那什么?