javascript - 未捕获的类型错误 : X has no method 'Y' - but Y *is* declared

标签 javascript

//现在已回答 - 请参阅代码行

我抛出异常,因为据说我调用的方法没有声明。但实际上是这样,所以我不确定为什么会发生

Uncaught TypeError: Object #<Unit> has no method 'onLoopEvent' 

代码是

function Unit () {
     var item = new Item();
     item.onLoopEvent = function( index ) {
         ...
     }

     return item; // <--- WAS missing this - as pointed out first by ars265
}

items[ items.length ] = new Unit();

// main loop that gets called periodically
function onLoop () {
    for( var i=0; i < items.length ; i++ ) {
    var item = items[ i ];
    item.onLoopEvent( i );
    }
}

我不明白为什么会发生这种情况。看起来该方法声明正确

最佳答案

事实上,您没有从 new Unit() 返回任何内容,因此您将数组索引项设置为 undefined,这导致了您的问题。

更正 更正后,您不会返回 undefined,因为这是函数在没有返回值的情况下返回的内容。相反,您将返回 Unit 函数的新实例。这就是我一边​​吃饭一边回答的结果。 ;)

关于javascript - 未捕获的类型错误 : X has no method 'Y' - but Y *is* declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598010/

相关文章:

javascript - 如何使用ajax停止整个网页的刷新?

javascript - 使用 Stormpath 进行 Node.Js 身份验证

javascript - Angular 4 NgFor 已完成事件

javascript - 如何强制浏览器在前6个并行连接中预取图像

javascript - ng-view 不显示在 angularjs 中

javascript - 如何将单选按钮创建为按钮?

javascript - 如何为(Angularjs)Web 应用程序进行集成测试

javascript - 将 .toLocaleString() 与存储整数的变量一起使用是可行的,而与直接数字一起使用而不存储在变量中则不起作用

javascript - JS 代码检查日期,如果满足条件则突出显示包含该日期的元素

javascript - 使用 ShaderMaterial 复制 MeshLambertMaterial 忽略纹理