Javascript - 関数をオブジェクトに格納する - バッドプラクティス?[クローズド]
2023-10-15 04:19:11
質問
関数を単に定義するのではなく、オブジェクトに格納することは悪いコーディングプラクティスであると考えられていますか(したがって、グローバルに)?
考えてみてください。
1.
Foo = {
bar: function() {
alert("baz");
}
}
Foo.bar();
vs.
2.
function bar() {
alert("baz");
}
bar();
確かに、2番目の例ではコードが少し少なくなるかもしれませんが、たくさんの関数を使い始めると、ごちゃごちゃしてきます。
私は、たとえば次のようにする方が、ずっと、ずっと、すっきりしていると思います。
Game.update()
などとするほうが、ずっとすっきりします。もっと深くなると、たとえば
Game.notify.admin(id)
などのように深くなっていくと、さらにきれいなコードになります。
オブジェクトに関数を格納することによるデメリットはありますか?
どのように解決するのですか?
最初のアプローチが望ましいです。この方法では、グローバルスコープを汚染する代わりに、関数のスコープを明示的に定義することになります。最初のアプローチを使用することにデメリットはありません。あるのはプラス面だけです :-)
結論:関数を定義するには常に最初のアプローチを使用します。2番目の方法は90年代のJavaScriptのようなもので、過去にさかのぼって平和に休ませておき、適切なスコープを使用しましょう。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] ExtJS 4のイベントハンドリングについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?