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