【发布时间】:2015-10-20 03:28:58
【问题描述】:
我对 JavaScript 世界很陌生,甚至对 CoffeeScript 也很陌生。我有一个问题,我不确定它是否可能。
假设我有一个这样的 CoffeeScript 类
class @Model
constructor: (@name) ->
如何将要创建的模型的名称传递给一个函数以实例化这些对象,同时将变量的名称[在这种情况下]附加到 _model 中?比如:
makeModel = (name) ->
"#{name}_model" = new Model(name)
我的 rails 应用程序告诉我:
unexpected =
"#{name}_model" = new Model(
^
我假设这是因为字符串。是否有某种方法可以将字符串转换为变量名?我快速浏览了.eval() 方法,但the little book of CoffeeScript 警告不要使用它。
谢谢
【问题讨论】:
-
代替命名变量,使用数组或对象来收集实例...
-
我没想到。作为最后的手段,这是可能的,但由于这些元素都存储在数据库中,因此通过名称与它们进行交互比维护数组要方便得多
-
all.fred_model 比 window.fred_model 甚至 fred_model 更容易使用吗?另外,如果它们在一个对象中,you8 可以迭代所有实例,这会导致变量混乱。我还会考虑将它们作为静态对象属性附加到构造函数本身。
-
再次,对于 JS 和 CS 的新手,您介意使用某种代码示例进行扩展吗?关键是我可能不需要遍历所有模型,但我可能需要直接定位
current_model = fred_model对不起,在这里完成新手! -
我不知道它在 CoffeeScript 中的样子,但是由于分配泄漏,您可以在普通 JS 中的“var xxx=”之后添加一个附加分配。类似“var xxx= self[name]= ...”
标签: javascript ruby-on-rails coffeescript