使用对象构造函数时定义不同数量的对象属性

时间:2017-11-18 13:14:40

标签: javascript

我是一个尝试编写文本冒险代码的初学者。我的知识有限,所以我觉得我必须解释我正在做的所有事情。

游戏围绕房间工作。大量的房间通过房间建设者(房间)在阵列(roomBase)内制作。客房存放在一个阵列内,因此客房可以洗牌。由于房间有随机位置,玩家所在的房间被复制到名为currentRoom的对象,因此玩家/其余代码可以与之交互。该系统用于在玩家进入一个房间时保存房间的描述文本并且真实/错误地确定房间中是否有敌人,但是当我尝试实施"外观"命令我无法找到正确的方法。理想情况下,我喜欢不同数量的描述"看起来"能够成为房间对象内的属性,可以在currentRoom中复制和引用。我可以看到如何在一个对象中执行此操作,我只是不确定在涉及构造函数时如何执行此操作。

以下是理想世界的解决方案。有没有办法可以做这样的事情?为我的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);

1 个答案:

答案 0 :(得分:0)

您可以轻松地将对象传递给构造函数,例如:

class Room {
  constructor(roomEntry, desc){
     this.roomEntry = roomEntry;
     this.desc = desc;
  }
}

所以你可以这样做:

new Room("whatever", { sword:"whatever", vines:"whatever"})