【问题标题】:function declaring object in array is undefined -- NO! its not!-?在数组中声明对象的函数未定义——不!它不是!-?
【发布时间】:2013-08-29 23:46:39
【问题描述】:

这是我的代码:

function insertMonsters() {

var monsterPositions = [2,8,13,15,22];

for ( var i in monsterPositions ) {
    monsters[i] = createMonster("monster",monsterPositions[i],1);
    document.getElementById(monsters[i].currentPosition).innerHTML = monsters[i].displayText;
    }

}

function createMonster(name,startingPoint,level){
    this.displayText = "<span>" + name + "</span>";
    this.currentPosition = startingPoint;
    this.level = level;
    this.health = function(){ return 25 + ( this.level * 15 );};
    this.strength = function(){return ( this.level * 3 );};
}

我得到一个错误:

TypeError: createMonster(...) is undefined
[Break On This Error]   

monsters[i] = createMonster("monster",monsterPositions[i],1);

我真的不知道出了什么问题,请link here 帮忙。

【问题讨论】:

  • @BrianMayer 我之前只是没有把我的整个程序放在这里谢谢
  • 提示:不要使用for..in 循环数组,而是使用常规的for 循环。
  • @php_nub_qq 没有完全理解,但我现在正在尝试......
  • @php_nub_qq ...仍然没有什么不知道发生了什么
  • 无视我的评论。还在寻找

标签: javascript runtime-error undefined-function


【解决方案1】:

看起来它的monsters 是未定义的,而不是 createMonster。确保初始化monsters数组,你应该没问题。

您可以将第 7 行更改为

var monsters = [];

在设置怪物时,您还缺少new 语句,

你需要

monsters[i] = new createMonster("monster",monsterPositions[i],1);

【讨论】:

  • 我之前确实定义了它,我只是没有包含我的整个代码,无论如何这不会是一个错误,当我想要一个全局变量时它只会给我一个局部变量。
  • 它没有在您链接到的代码中初始化。那就是我在那里看到的错误。当我加载页面时,怪物没有定义,并在 Chrome 的控制台日志中引发错误。
  • 查看脚本中的第 7 行
  • @php_nub_qq 因为它创建了一个对象,就像写 Object() 而不是 new Object()
  • @php_nub_qq Javascript 不区分构造函数和“普通函数” new 可以与任何函数一起使用。它只是创建一个新对象并将该对象绑定到函数(以便函数中的this 指向新对象)。由于 createMonster 函数对此起作用并且不返回任何内容,因此我认为它应该用作 new 的构造函数
猜你喜欢
  • 1970-01-01
  • 2019-05-06
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
相关资源
最近更新 更多