0

オブジェクトリテラル内のコード「@」(this) が、即時ではなく囲んでいるオブジェクトを参照する理由を知っている人はいますか?

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

1 に答える 1

1

Hash コンストラクターを呼び出し、params をコンストラクターに送信しています。このコードは、次のコードと似ています (同じではない可能性があります)。

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

上記の例では、インスタンスがまだ作成されていないため、特にインスタンス自体でthisはなく、外部オブジェクトを参照していることを明確に確認できると思います。testtest

上記の例では、次のように問題を解決します。

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 に答える