如何创建可以在多个级别引用的类/对象

Teh*_*ket 5 javascript class object

我已经阅读了许多在javascript中制作临时课程的方法.我正在尝试创建一个巨大的项目列表,每个项目都有各种变量.我需要能够从此列表中调用某个对象的属性.以下代码编译,但当第9行尝试访问items.yspeed1.name时,它会创建名为"undefined"的按钮.我不知道如何在这样的javascript中访问函数的变量.

var itemslist = function(){
    this.yspeed1 = function(){
        this.name = 'Yellow Upgrade';
        this.price = 50;
    }
    this.yspeed2 = function(){
        this.name = 'Blue Upgrade';
        this.price = 25;
    }
}

var newitem = document.createElement('button');
newitem.innerHTML = items.yspeed1.name;
shop.appendChild(newitem);
Run Code Online (Sandbox Code Playgroud)

Eli*_*ert 1

当您定义具有状态的可重用结构时,您可以在 JS 中使用类,即您可能有一个类的多个副本(实例)。

您所拥有的只是具有属性的单个对象(单个实例)的定义。因此,请改用 Javascript 构造:

var itemslist = {
    yspeed1: {
        name: 'Yellow Upgrade'
        , price: 50
    }
    , yspeed2: {
        name: 'Blue Upgrade'
        , price:  25
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您有一个具有两个属性的对象 - yspeed1 和 yspeed2。这些都有自己的名称和价格属性。

如果你想扩展该对象,只需添加到它,例如itemslist.yspeed3 = { hello: 'world' };