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

问题描述:

我是一个试图编写文本冒险的初学者。我的知识是有限的,所以我觉得我必须解释我所做的全部事情。使用对象构造函数时定义不同数量的对象属性

游戏在房间周围工作。大量房间通过房间构造(房间)在阵列(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); 
+0

您当前的代码是无效的。你能不能修改格式,并给出一个样本,你可以用'id'来描述你的意思,就像你使用不同的描述一样',尤其是在你要使用它的时候 –

你可以很容易地传递一个对象给构造函数,如:

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

所以,你可以这样做:

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