JavaScriptで開発しているうちに、関数間でどのような引数が渡されるかを調べる時間を費やしました。そこで私は今日新しい方法を試しました。私は単純なオブジェクトを作成し、イベント名と引数を定義しました。カスタムJavaScriptイベントオブジェクト?
var GreetingEvent = {
HELLO: 'hello',
'arguments': {
name: null
}
}
// dispatch
// pseudo code
this.fireEvent(new MyEvent(GreetingEvent.HELLO,"myname"));
// listening
// pseudo code
this.listenToEvent(GreetingEvent.HELLO, this.onGreetingEvent);
他の人がすでに自分の状況を経験していると確信しています。
あなたの状況と解決策は何ですか?
アップデート:私は今コーディングしていますか
これがあります。
// dispatch
// pseudo code
this.fireEvent('hello',{name:'myname'});
// listening
// pseudo code
this.listenToEvent('hello', this.onGreetingEvent);
このコードの問題は、私の同僚は、引数はそのリスナーに渡されているかを調べるために私のコードを開く必要がありますか、彼らはにconsole.logを使用する必要があります()。それは実際には問題ありません。私はもっと良い方法を見つけようとしています。
あなたのスタイルが変わったのを見てうれしいです。私は、そのオブジェクトがあなたを買っていたものに困惑しています。あなたはまだ文字列であるイベント名を参照していました - なぜそれを隠すのでしょうか? – andyortlieb
@andyortlieb //イベント名を変更しなければならない状況がありました。このイベントは多くのファイルで使用されていました。そのため、多くのファイルを開いてイベント名を変更し、コードを再度テストしなければなりませんでした。その後、私の同僚(フラッシュデベロッパー)は私にイベントオブジェクトを代わりに使用するように勧めました。私はそれがかなり良いアイデアだと思って、フラッシュ、C#、および他の言語がそのような方法でイベントを使用することを知りました。私は本当にあなたの質問に正確に答えることができません。 – Moon
それは保守性の観点からはある意味がありますが、名前を簡単に変更して下位互換性を維持するために、火災やハンドラの名前付きオブジェクトプロパティを参照している場合でも、まだ気になります。長期的に大規模に混乱している。オブジェクトのプロパティの名前はイベントの名前と同じくらい明確でなければならず、イベントの名前を変更する必要がある場合は、おそらくオブジェクトプロパティの名前を変更する必要があります。 – andyortlieb