1

「this」からローカル関数スコープにプロパティを挿入する方法を探しているので、「this」と書く必要はありません。このプロパティを参照するとき。

正確な詳細は、このコードhttp://jsfiddle.net/wwVhu/3/に表示されます。この部分を見てください

    ...
    //it's how it works
    doStuff: function(param) { $('#output').html(this.value + param) }

    //it's how i want it work - without referencing to this
    //doStuff: function(param) { $('#output').html(value + param) }

関数コードを「with(this) { ... }」でラップすることで実現できることは知っていますが、他のオプションは何ですか?

すべてのメソッドの先頭に「with(this)」を記述するか、js aop を使用することは、私が避けようとしているものです。

4

2 に答える 2

0

基本的に 4 つのオプションがあります。

  1. あなたはそれをそのままにしておいてください。コンテキストとローカル スコープは異なるオブジェクトです。それらを組み合わせることは悪い習慣であり、衝突につながります。
  2. value プロパティを 2 番目のパラメーターとしてdoStuff関数に追加します。
  3. thisより短い識別子でニックネームを付けます。私はしばしば自分自身を使用していることに気づきます$t
  4. を使用しますwith(this) $('#output').html(value + param);。で説明されているように、これは不適切なコーディング方法1)です。paramにプロパティがあると、コードが壊れますthis
于 2013-04-23T20:01:56.123 に答える