【问题标题】:Uncaught TypeError: Cannot read property 'x' of undefined, function returning Null未捕获的类型错误:无法读取未定义的属性“x”,函数返回 Null
【发布时间】:2015-04-18 05:31:56
【问题描述】:

这是一个使用 Processing,js 的程序的对象方法。它遍历对象内的 force 数组中存储的所有 PVector 对象,将它们相加,并将总和作为另一个 PVector 对象返回。

经过调试,我发现这是错误的原因,'Uncaught TypeError: Cannot read property 'x' of undefined' 我只是不明白这个问题,或者这个错误是什么意思。任何帮助表示赞赏。

Body.prototype.resForce = function() {
    var resForce = new PVector(0, 0);
    for (var i=0; i<this.forces.length; i++) {
        resForce.set = resForce.add(this.forces[i]);
    }
return resForce;
};

编辑:

这是full code,所以它更有意义..

【问题讨论】:

  • 在右侧,它应该显示违规错误的行号。请检查以确保此代码块中发生此错误,或发布附加到此项目的其他 javascript,以便我们进一步调查。
  • 这是一个猜测,但 processing.js 文档没有在这样的 PVector 上使用“set”。如果只是将向量相加以产生增量,我认为循环的主体应该只是 resForce.add() 而没有赋值。此外,可能 resForce.add 调用正在尝试访问 this.forces[i] 的属性“x”,但 this.forces[i] 没有 x,因此您可能在数组中有一些不是t 一个 PVector。
  • 实际上,仔细观察一下,我认为您需要共享声明和填充 this.forces 的代码。这是相关的。
  • 感谢@Mic 和 Danbopes 的回复。这是完整的代码:(khanacademy.org/computer-programming/2d-physics-lab/…)。很多事情都在不断更改/注释掉,这就是我不想分享的原因

标签: javascript processing.js


【解决方案1】:

在玩了很多代码之后,我似乎已经解决了这个问题。我从调试中收集到的是,沿着这条线的某个地方,每个 Body 对象的 .forces 变量都从一个数组变成了未定义的,导致 .resForce() 方法无法遍历所有力,并返回一个未定义的对象。我认为是问题的方法没有受到影响。无论如何,感谢您提供的所有帮助。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-01
    • 2021-01-16
    • 1970-01-01
    • 2021-12-22
    • 2015-01-06
    • 2017-07-26
    • 2019-02-26
    相关资源
    最近更新 更多