如何知道函数内部的功能?

时间:2011-11-18 16:17:14

标签: javascript coffeescript statechart

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

的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()。它运作得很好!

3 个答案:

答案 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中实现它。

如果您需要帮助或有疑问,请与我保持联系。