我正在尝试创建一个状态图框架作为一个业余时间项目。
的CoffeeScript
Statechart.state "A", ->
@state "B1", ->
@state "C"
@state "B2", ->
的JavaScript
Statechart.state("A", function() {
this.state("B1", function() {
this.state("C");
});
this.state("B2", function() {
});
});
我想知道内部函数是否有办法知道外部函数,因此B1和B2知道它们是A的子元素,C知道它是B1的子元素。
更新:我使用了bind()。它运作得很好!
答案 0 :(得分:1)
使用胖箭=>
。它使用Function.prototype.bind
:
Statechart.state "A", ->
@state "B1", =>
@state "C"
@state "B2", =>
在此代码中,@
/ this
将始终引用Statechart
对象。
答案 1 :(得分:0)
你需要在第一个函数中保持对'this / @'值的引用。
我通常会创建一个名为'self'的变量,如下所示:
Statechart.state "A", ->
self = @
@state "B1", ->
self.state "C"
@state "B2", ->
答案 2 :(得分:0)
我在直接的javascript中编写了一个非常全面的功能。 Stativus。您可以使用它作为模型在CoffeeScript中实现它。
如果您需要帮助或有疑问,请与我保持联系。