有没有人知道为什么对象文字中的代码“@”(this)引用封闭对象而不是直接对象?
class Example extends Backbone.View
render: ->
test =
num: 10
nextNum: @num + 1 # References "Example" not "test"
答案 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