从参考文献返回错误的对象

时间:2012-08-14 13:31:10

标签: javascript backbone.js coffeescript

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

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

1 个答案:

答案 0 :(得分:1)

您正在调用Hash构造函数,并将params发送到构造函数。我看到这个代码与此代码类似(可能不相同):

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