Javascript 如何创建可在多个级别引用的类/对象
我读过很多很多用javascript制作临时类的方法。我试图创建一个庞大的项目列表,每个项目都有各种变量。我需要能够从这个列表中调用某个对象的属性。 下面的代码可以编译,但当第9行尝试访问items.yspeed1.name时,它会创建名为“undefined”的按钮。我不知道如何像这样在javascript中访问函数的变量Javascript 如何创建可在多个级别引用的类/对象,javascript,class,object,Javascript,Class,Object,我读过很多很多用javascript制作临时类的方法。我试图创建一个庞大的项目列表,每个项目都有各种变量。我需要能够从这个列表中调用某个对象的属性。 下面的代码可以编译,但当第9行尝试访问items.yspeed1.name时,它会创建名为“undefined”的按钮。我不知道如何像这样在javascript中访问函数的变量 var itemslist = function(){ this.yspeed1 = function(){ this.name = 'Yellow
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);
嗯,对于初学者来说,
yspeed1
是一个函数
,因此您必须调用它,我认为这可能是您正在寻找的类型
var itemslist = function(){
this.yspeed1 = {
name: 'Yellow Upgrade',
price: 50
}
}
这只是一种方式。除此之外,您还必须创建一个
new items.yspeed1();
有些情况下,“类”是有用的,但我认为您可以在这里使用一个简单的对象
var items = {}
items.yspeed1 = {}
items.yspeed1.name = 'Yellow Upgrade';
items.yspeed1.price = 50;
items.yspeed2 = {};
items.yspeed2.name = 'Blue Upgrade';
items.yspeed2.price = 25;
var newitem = document.createElement('button');
newitem.innerHTML = items.yspeed1.name;
shop.appendChild(newitem);
在JS中定义具有状态的可重用结构时,可以使用类,也就是说,一个类可能有多个副本(实例) 您所拥有的只是具有属性的单个对象(单个实例)的定义。因此,请使用该Javascript构造:
var itemslist = {
yspeed1: {
name: 'Yellow Upgrade'
, price: 50
}
, yspeed2: {
name: 'Blue Upgrade'
, price: 25
}
}
现在有了一个具有两个属性的对象——yspeed1和yspeed2。而这些都有自己的名称和价格属性
如果要扩展该对象,只需将其添加,例如,
itemslist.yspeed3={hello:'world'}代码>如果您希望使用基于类的方法,这里有一个使用原型的方法
项目类别:
function YSpeedItem(name, price)
{
this.name = name;
this.price = price;
}
YSpeedItem.prototype.getName = function()
{
return this.name;
}
YSpeedItem.prototype.getPrice = function()
{
return this.price;
}`
主代码
var yspeed1 = new YSpeedItem("Yellow Upgrade", 50);
var yspeed2 = new YSpeedItem("Blue Upgrade", 25);
itemsList = [];
itemsList.push(yspeed1);
itemsList.push(yspeed2);
var newitem = document.createElement('button');
newitem.innerHTML = items[0].getName;
shop.appendChild(newitem);
这里有更多信息我看不到您在代码中的任何地方调用itemslist类/函数,填充项的代码在哪里
?类似地,他也不是新的
“itemslist的存在,因此仅此更改甚至无法解决他的问题。您创建新yspeed1
的示例还需要应用于他试图引用的初始对象。初始对象是什么?我不明白。newitem.innerHTML=items.yspeed1.name代码>我的错。这里他正在访问项目
而不是项目列表
,所以我想我们可以假设他已经是新的
。很抱歉,这对我想做的很有效。我不知道不使用函数是可能的。