使用coffeescript从字符串动态生成新的命名类
我环顾四周,发现了许多问题,它们都是解决问题的方法,但它们都不能准确地解决我的问题,所以我想知道我在解决问题的方法上是否犯了一些根本性的错误 在下面的循环中,我循环了一些从JSON解析的数据。对于每组数据,我想用使用coffeescript从字符串动态生成新的命名类,coffeescript,Coffeescript,我环顾四周,发现了许多问题,它们都是解决问题的方法,但它们都不能准确地解决我的问题,所以我想知道我在解决问题的方法上是否犯了一些根本性的错误 在下面的循环中,我循环了一些从JSON解析的数据。对于每组数据,我想用string=new Robot扩展我的class Robot,其中string是一个字符串 目前,我的代码没有产生任何错误,并成功创建了新的机器人,但由于它们的名称是字符串,因此尝试使用robot1.move()或robot2.doSomeOtherClassyThing()访问它们时
string=new Robot
扩展我的class Robot
,其中string
是一个字符串
目前,我的代码没有产生任何错误,并成功创建了新的机器人
,但由于它们的名称是字符串,因此尝试使用robot1.move()
或robot2.doSomeOtherClassyThing()
访问它们时不起作用,并告诉我它们未定义
这似乎不需要一个详细的助手函数来让它工作。我错过了什么
createRobots: -> # process robot commands
createXcoord = missionData.xCoord
createYcoord = missionData.yCoord
createOrient = missionData.orientation
createInstru = missionData.robotInstructions
for command in createOrient
robot = 'robot' + (_i + 1)
name = robot
robot = new Robot \ # create named Robot
name
, createXcoord[_i]
, createYcoord[_i]
, createOrient[_i]
, createInstru[_i]
console.log(robot)
我认为现在发生的是,当声明
robot=newrobot
时,变量“robot='string'
被写入
我希望的结果是
string1=newrobot
,“string2=newrobot”
。这有意义吗?jsfiddle.net/7EN5y/1您需要将它们添加到上下文中。如果希望它们是全局的,请创建如下变量:
# Either the browser root, or the CommonJS (e.g. Node) module root
root = window or exports
如果希望对象容纳机器人,请将此类对象添加到根
root.robots = []
然后在创建机器人时,将它们添加到这样的对象中
robot = 'robot' + (_i + 1)
name = robot
robot = new Robot # ...
root[name] = robot # or robots[name] = robot
然后,您可以使用类似于
robot1.move()
,或robot1.move()
(取决于是否将它们附加到根上)。但是,您需要知道其他地方的名称,以便以root[name]
的身份访问它们。我认为类似于root.robots={}
是唯一明智的继续方法。很抱歉,我将您的答案标记为已接受,然后又没有。这很有帮助,因为它修复了我遇到的一个范围问题,但实际上似乎没有解决我提出的问题。我想现在发生的是,在声明新机器人时,变量“robot='string'
被写入。我希望的结果是string=newrobot
。这有意义吗?我想我真的不明白你想要实现什么。这句话的目的是什么?@happilyUnStuck,这是我在理解你想要什么。