我正试图摆脱这个错误,我的朋友和我一直遇到问题。错误在标题中,发生在第93行...任何想法或建议?第93行下方标有注释。 document.body.innerHTML.replace("__ITEM__", pocket.item_name); //LINE 93

我想提及的另一件事是,我已经裁剪了所有不必要的代码(我认为),因此请询问是否需要另一部分。

如果这是新手犯的错误,我不会感到惊讶,请随时致电我。对于任何不良做法或您可能会发现的不良做法,我也表示歉意,对此我还是陌生的。

首先调用函数start()。

var status, items_none, items, pocket, money;

function item(item_name, usage_id, description, minimum_cost) {
    this.item_name = item_name;
    this.usage_id = usage_id;
    this.description = description;
    this.worth = minimum_cost;
    this.usage_verb = "Use";
    this.choose_number = false;
}
function start() {
    status = "Welcome to Collector.";

    items_none = item("---", -2, "Your pockets are empty.", 0);
    items = new Array();
    items[0] = item("Cardboard Box", 0, "Open the box to see what's inside.", 100);
    ...

    pocket = items_none; //Start with empty pockets.
    money = 100; //Start with 0 coins.

    updateGui();
}
function updateGui() {
    //This updates all text on the page.
    document.body.innerHTML.replace("__COINS__", money);
    document.body.innerHTML.replace("__ITEM__", pocket.item_name); //LINE 93
    document.body.innerHTML.replace("__STATUS__", status);
    document.body.innerHTML.replace("__ITEM:USE__", pocket.usage_verb);
    document.body.innerHTML.replace("__ITEM:DESC__", pocket.description);
    document.body.innerHTML.replace("__ITEM:WORTH__", pocket.worth);
    document.body.innerHTML.replace("__ITEM:VERB__", pocket.usage_verb);
}


像往常一样,在此先感谢并祝您编程愉快!

最佳答案

每次在new之前添加item,例如

items_none = new item("---", -2, "Your pockets are empty.", 0);
...
items[0] = new item("Cardboard Box", 0, "Open the box to see what's inside.", 100);


为什么是这样?考虑一个叫做pair的函数:

function pair(x, y) { this.x = x; this.y = y; }


仅在不使用new的情况下调用它意味着您在进行简单的函数调用。 this仅指当前对象上下文,可能是window

p = pair(55, 66);
alert(window.x == 55); // true!
alert(p.x); // error--p is undefined.


“ new”需要一个函数并将其视为构造函数。 this设置为新对象。

p = new pair(55, 66);
alert(window.x == 55); // false!
alert(p.x); // 55!

关于javascript - 未捕获的TypeError:无法读取未定义的属性“item_name”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19473039/

10-12 00:26
查看更多