javascript - 迭代用户选项并将它们分配给 CoffeeScript 中的对象实例

标签 javascript class coffeescript

假设我在 CoffeeScript 中有这个类:

class Human
   constructor: ( options ) ->
       if options 
           for property of options
               opts[ property ] = options[ property ]

   printName: ->
       console.log 'My name is ' + opts.name

   opts =
       name: 'foo'

如果我要跨对象的多个实例打印名称属性,我总是会得到相同的值:

a = new Human({name: 'bob'})
b = new Human({name: 'john'})

// a.printName() -> john
// b.printName() -> john

但我想单独保存每个实例的值,如下所示:

// a.printName() -> bob
// b.printName() -> john

现在我知道我必须使用 this.name,但是如何使用一种方法来迭代一长串值并将它们分配给对象实例来实现这一点?我不想像这样污染构造函数

constructor: ( @name, @surname, @age, ... )

最佳答案

这应该有效:

class Human
   constructor: ( options ) ->
       @opts = default_ops
       if options 
           for property of options
               @opts[ property ] = options[ property ]

   printName: ->
       console.log 'My name is ' + @opts.name

   default_ops =
       name: 'foo'

关于javascript - 迭代用户选项并将它们分配给 CoffeeScript 中的对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15273529/

相关文章:

javascript - 动画循环 - css

c++ - 遍历结构和类成员

javascript - 为什么 rails 在 coffeescript 文件不能包含 javascript 代码时使用 .js.coffee 扩展名?

javascript - Backbone 动态创建 'el' 未绑定(bind)事件

javascript - HTML5 中的 Shared Worker 和 Worker 有什么区别?

javascript - HTML 中的地址函数

javascript - 如何仅在第一页加载时调用 javascript 函数

java - 这个 : [Ljava. lang.Object; 是什么?

javascript - 获取多个类的属性值

Javascript 函数在 Firefox 中运行多次,但在 Chrome 中运行一次,为什么?