0

有谁知道为什么对象文字中的代码“@”(this)引用封闭对象而不是直接对象?

class Example extends Backbone.View
  render: ->
    test =
      num: 10
      nextNum: @num + 1 # References "Example" not "test"
4

1 回答 1

1

您正在调用 Hash 构造函数,并将参数发送到构造函数。我看到此代码与此代码相似(可能不一样):

var test = new Hash({ num: 10, nextNum: this.num + 1 });

我认为在上面的示例中,您可以清楚地看到this引用外部对象而不是test实例本身,除其他外,因为test实例仍未创建。

在上面的示例中,您将解决这样的问题:

var num = 10;
var test = new Hash({ num: num, nextNum: num + 1 });

因此,将其转移到您的案例中,我认为您应该以类似的方式解决它:

class Example extends Backbone.View
  render: ->
    num = 10

    test =
      num: num
      nextNum: num + 1
于 2012-08-14T14:41:05.187 回答