Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript方法是';找不到_Javascript_Arrays_Object - Fatal编程技术网

JavaScript方法是';找不到

JavaScript方法是';找不到,javascript,arrays,object,Javascript,Arrays,Object,我有一个“目标”: function Rock() { this.size = 30.0; this.body; this.isDead = false; this.vertexPosBuffer; this.vertexColBuffer; } 我给出了一个函数: Rock.prototype.Tick = function() { this.body.ApplyForce(new b2Vec2(0, 10), this.body.GetPo

我有一个“目标”:

function Rock()
{
    this.size = 30.0;
    this.body;
    this.isDead = false;

    this.vertexPosBuffer;
    this.vertexColBuffer;
}
我给出了一个函数:

Rock.prototype.Tick = function()
{
    this.body.ApplyForce(new b2Vec2(0, 10), this.body.GetPosition());
}
function TickRocks()
{
    for(var rock in rocks)
    {
        rock.Tick();
    }
}
然后我制作了一组岩石:

var rocks;
function NewRandomRock()
{
    var newRock = new Rock;
    var pos = new b2Vec2;
        pos.x = Math.random()*(gl.viewportWidth+1);
        pos.y = Math.random()*(gl.viewportHeight+1);
    newRock.InitRand(pos);
    rocks.push(newRock);
}
然后我调用Tick函数:

Rock.prototype.Tick = function()
{
    this.body.ApplyForce(new b2Vec2(0, 10), this.body.GetPosition());
}
function TickRocks()
{
    for(var rock in rocks)
    {
        rock.Tick();
    }
}
现在问题来了,我得到了以下错误:

未捕获的TypeError:对象0没有方法“Tick”

虽然“InitRand(…)”方法(我以同样的方式添加到Rock中)确实有效


我做错了什么?

您的问题是,在中使用
并不是为了迭代数组。它是用来枚举对象属性的

您应该使用普通for循环:

for(var i = 0; i < rocks.length; i++) {
    rocks[i].Tick();
}
for(变量i=0;i
您的问题是,在
中使用
不是为了迭代数组。它是用来枚举对象属性的

您应该使用普通for循环:

for(var i = 0; i < rocks.length; i++) {
    rocks[i].Tick();
}
for(变量i=0;i
您必须初始化变量:

function Rock() {
    this.size = 30.0;
    this.body = {};     //Initialize at an object
    ...
}
var rocks = [];   //Initalize an array
function NewRandomRock() {
    ...
另外,由于
rocks
是一个数组,我建议使用
for(;;)

函数ticklocks()
{

对于(var i=0,l=rocks.length;i您必须初始化变量:

function Rock() {
    this.size = 30.0;
    this.body = {};     //Initialize at an object
    ...
}
var rocks = [];   //Initalize an array
function NewRandomRock() {
    ...
另外,由于
rocks
是一个数组,我建议使用
for(;;)

函数ticklocks()
{

对于(var i=0,l=rocks.length;这太愚蠢了!但是啊,好吧,现在我学到了一些东西:D谢谢!这太愚蠢了!但是啊,好吧,现在我学到了一些东西:D谢谢!我有一个‘Init’方法,我使用初始化所有变量;)(我这样做是因为有时我需要重新初始化对象).无论如何谢谢:我有一个'Init'方法,我使用初始化所有变量;)(我这样做是因为有时我需要重新初始化对象)。无论如何谢谢:D