【发布时间】:2017-05-10 05:45:46
【问题描述】:
我意识到我不知道如何做一些我认为非常重要的事情,即创建一个“子类”,或者换句话说,在一个实例上创建一个嵌套对象,该对象具有引用该实例的函数。
例如,我希望能够做到这一点:
sequence = new Sequencer(2, [true, true])
sequence.is_valid # returns true or false
使用以下代码:
class Sequencer
Validations:
correct_sequence_length: ->
@division == @sequence.length
positive_length: ->
@division > 0
constructor: (args) ->
{ @sequence, @division } = args
is_valid: ->
@Validations.correct_sequence_length() &&\
@Validations.positive_length()
但似乎因为Validations 是一个对象,它有自己的范围,并且其方法中的this 并不引用实例,而是引用Validations 对象。这意味着它无法访问@sequence 或@tempo。我也尝试过使用箭头函数,但它不起作用。
解决这个问题的最佳方法是让Validations 成为自己的类吗?
【问题讨论】:
-
Coffeescript 还是 ES6?请决定,它们完全不同。
-
Yes, you need an extra class 如果你想嵌套属性。
-
@Bergi 我更喜欢 coffeescript,但 v2 输出 ES6 类,所以它不一定不相关。如果您有一个适用于 ES6 但不适用于咖啡脚本的解决方案,无论如何我都会很想看到它。
标签: javascript coffeescript ecmascript-6