使用对象构造函数时定义不同数量的对象属性
问题描述:
我是一个试图编写文本冒险的初学者。我的知识是有限的,所以我觉得我必须解释我所做的全部事情。使用对象构造函数时定义不同数量的对象属性
游戏在房间周围工作。大量房间通过房间构造(房间)在阵列(roomBase)内制作。房间存储在一个阵列内,因此房间可以洗牌。由于房间具有随机位置,玩家所在的房间被复制到一个名为currentRoom的对象,因此玩家/代码的其余部分可以与其交互。这个系统在玩家输入一个房间的时候可以保存房间的描述文字,并且可以确定房间里是否有敌人,但是当我尝试执行“look”命令时,我无法找到正确的方法做到这一点。理想情况下,我希望可以将不同数量的“外观”描述为房间内的属性,这些属性可以在当前房间中复制和引用。我可以看到如何在单个对象中执行此操作,但我只是不确定如何在涉及构造函数时执行此操作。
下面是解决方案在理想世界中的应用。有没有办法像这样做?对于我的noob问题抱歉。
function Room(roomEntry,desc) {
this.roomEntry = roomEntry;
this.desc = {desc}
}
var roomBase = [
room0 = new Room(
"You enter a dark room. Vines cover the walls and you notice a hilt sticking out the ground.",
"sword:"With a closer look you find the sword is stuck.",vines:"Thick vines that you've never seen the likes of before."")
room1 = new Room()
room2 = new Room()
//etc
];
var currentRoom = new Object({});
currentRoom.roomEntry = "foo";
currentRoom.desc = {};
currentRoom = roomBase[0];
alert(currentRoom.desc.sword);
答
你可以很容易地传递一个对象给构造函数,如:
class Room {
constructor(roomEntry, desc){
this.roomEntry = roomEntry;
this.desc = desc;
}
}
所以,你可以这样做:
new Room("whatever", { sword:"whatever", vines:"whatever"})
您当前的代码是无效的。你能不能修改格式,并给出一个样本,你可以用'id'来描述你的意思,就像你使用不同的描述一样',尤其是在你要使用它的时候 –