- 608 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 20:39:00.72 ID:QHkNbR5l.net]
- 3. それなりに組織的にコーディングすると、どうしてもイベントハンドラで共通の関数を使いたい要求が出てくる。
しかしイベントハンドラだとthisがe.currentTargetによって潰されているので、共通関数をクロージャ(最終段はグローバル)で掴むしかないが、 クロージャはクローズ(追加不能だしコード配置が限定される=C++で言うクラスはクローズ、namespaceはオープンと同じ意味のクローズ)ので、 現実的には使いにくく、俺はイベントハンドラを集めたオブジェクト(その中に共通関数も入っている)をthisとしてcallし直して、 イベントハンドラ内ではthis.my_sub_function()で共通関数を呼べるようにしている。 この場合、thisは単なるオブジェクトなので、継承出来るのがいい。(共通関数の共通関数を__proto__側に追い出せる) どうせthisが使い物にならない仕様なので他の連中も同様にやっているとは思う。 なお俺はjQuery不要派だがjQuery自体は初心者には分かりやすく偉大だと思っている。 実際にjQueryを使っていて問題ないのなら使うこと自体も悪いことではない。 ただしそれは世の中のマトモなサイト≒ガチのプログラマーが本気で書いたサイトではほぼ使われていない手法だということも理解しておいた方がいい。 といっても今の君には分からないだろうが、イベントハンドラ内でthisをe.currentTargetとして利用することはガチのサイトではほぼ無い、ということ。 今はどうせ何も分かってない状態なんだろうから、それならイベントハンドラ内ではthisを使わずe.currentTargetを使う癖を付けた方が多分いい。 それ以前にbubbleを使うようにした方がいいが。
|

|