未找到JavaScript方法
JavaScript method isn't found
本文关键字:方法 JavaScript 更新时间:2023-09-26
我有一个" 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.GetPosition());
}
然后创建一个岩石数组:
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函数:
function TickRocks()
{
for(var rock in rocks)
{
rock.Tick();
}
}
现在问题,我得到以下错误:
未捕获的TypeError: Object 0没有方法'Tick'
虽然"InitRand(…)"方法,我以同样的方式添加到岩石,确实工作…
我做错了什么
您的问题是使用for in
不是为了迭代数组。它被用来枚举对象属性。
应该使用普通的for循环:
for(var i = 0; i < rocks.length; i++) {
rocks[i].Tick();
}
你必须初始化你的变量:
function Rock() {
this.size = 30.0;
this.body = {}; //Initialize at an object
...
}
var rocks = []; //Initalize an array
function NewRandomRock() {
...
另外,由于rocks
是一个数组,我建议使用for( ; ; )
:
function TickRocks()
{
for(var i=0, l=rocks.length; i<l; i++)
{
var rock = rocks[i];
rock.Tick();
}
}
相关文章:
- object.仅冻结对象方法.JavaScript
- 快速方法 Javascript/Jquery/etc 检索表单中包含的所有 aspnet:textbox (input)
- 查看整个画布是否被涂成一种颜色的方法.Javascript + processing.js
- 从方法 JavaScript 访问对象变量
- pop()方法javascript没有给出完整的输出
- 如何格式化setInterval方法JavaScript的运行时间
- 正则表达式/替换方法Javascript
- 将vars传递给其他方法javascript
- 寻找一种简化if/else语句的方法.javascript
- focus()或select()方法javascript,在Chrome中性能缓慢
- 未捕获的类型错误:对象没有方法..Javascript
- 对象方法javascript中的方法/函数
- 构造函数中的私有方法(Javascript,坏主意?)
- 查看数组是否有数组的最简单方法?Javascript
- 扁平化数组元素(不是整个数组)的有效方法JavaScript
- 最常用的生成PDF报告的方法(JavaScript,node.js)
- 创建多维数组与地图方法:javascript
- 对象方法Javascript HTML DOM中的多个事件监听器
- 卡住了.adddeventlistener不能在属性内处理我的方法.Javascript
- 任何获取文档选择的x、y、w、h的方法(JavaScript)