0

編集:自分で解決しました。コードをクラスにラップして仕事をしたので、@/this はウィンドウではなくオブジェクトを参照しています。


クラスを使用せずに、coffeescript スクリプトを作成しています。私のJavaScriptコードは無名関数でラップされています:

(function() { ... }).call(this)

明日、昨日、来週、来月などのチェックボックスのリストがあります。ユーザーはこれらの 1 つまたは複数を選択できます。ユーザーが何を選択したかを確認する代わりに、これらのチェックボックスのクラス名 (明日、来週...) を保存します。持っているクラス名を確認してから適切なメソッドを呼び出す代わりに、クラス名に対応するメソッドを作成しました。

明日()がグローバルスコープで定義されている場合、次のように呼び出します。

this[expression]()

ここで、expression にはクラス名が保持されます。たとえば、tomorrow です。

これが機能するために、関数を次のように定義しました。

  this.tomorrow = function() {
       return console.log("I was triggered");
  };

Tomorrow() がグローバル スコープで定義されるようになりました。手間をかけずにグローバルスコープで関数を定義しない方法はありますか?

4

1 に答える 1

0

コードをクラスにラップすることで仕事をしたので、@/this はウィンドウではなくオブジェクトを参照しています。

@[expression]() 

意図したとおりに動作するようになりました

于 2013-02-15T16:13:03.733 に答える