0

我正在尝试创建一个状态图框架作为业余项目。

咖啡脚本

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 的孩子。

更新:我使用了绑定()。效果很好!

4

3 回答 3

1

使用粗箭头=>。它使用以下实现Function.prototype.bind

Statechart.state "A", ->
   @state "B1", =>
       @state "C"
   @state "B2", =>

在此代码中,@/this将始终引用该Statechart对象。

于 2011-11-18T21:20:48.957 回答
0

您需要在第一个函数中保存对“this/@”值的引用。

我通常会创建一个名为“self”的变量,如下所示:

Statechart.state "A", ->
   self = @
   @state "B1", ->
       self.state "C"
   @state "B2", ->
于 2011-11-18T16:37:30.827 回答
0

我用纯 JavaScript 写了一个功能非常齐全的。状态。您可以使用它作为模型在 CoffeeScript 中实现它。

如果您需要帮助或有任何疑问,请随时通知我。

于 2012-06-05T14:14:34.427 回答