・名前空間が分からないので教えてください
・下記例で、Hogeは何に該当するのでしょうか?
・Hoge.getPerson()と呼んでいるので、グローバル環境に生成した名前空間?
・それとも、var宣言しているので、ローカル変数?
・あるいは、ドットで繋いでいるので、オブジェクト?
・もしかして、「名前空間」であり「変数」であり「オブジェクト」でもある?
var Hoge = (function(){
//中略
return {
getPerson: _getPerson
};
}());
Hoge.getPerson();
・名前空間って何ですか?
No.1ベストアンサー
- 回答日時:
Hoge はグローバルスコープの変数で、
変数が指し示すのが名前空間「っぽい」オブジェクトです。
そもそも JavaScript には言語的に名前空間がありませんが、
慣習的に名前空間「っぽい」オブジェクトの書き方があります。
この名前空間「っぽい」オブジェクトを導入する利点としては、
・他人の作ったスクリプトと並存したときの危険性が下がる (グローバルスコープの汚染が少ないので変数名が被りづらい)
・関連する変数や関数が集まっているので管理がしやすい
・コーディングが綺麗になる (全ての関数名に長ったらしい前置詞を強制されない)
があるので、ある一定の規模のライブラリを作るなら採用するのが常識になっているようです。
jquery.js なら $ とか jQuery とかですね。
Hoge.getPerson() の挙動ですが、詳しく整理するならば
グローバルスコープの変数 Hoge
→ が指し示すオブジェクト (即時関数の戻り値である名前空間っぽいオブジェクト)
→ のプロパティ getPerson
→ が指し示すオブジェクト(ローカルスコープの_getPersonに入っていた関数オブジェクト)
→ を実行
余談ではありますが、
Hoge というのは命名規則的にどうかと思います。
JavaScript は一応は Java っぽい言語なので、命名規則も大体は Java に準じています。
で、Java の推奨される命名規則といえば、
パッケージ: hoge.boke
クラス: HogeBoke
関数名: doHogeBoke
変数名: hogeBoke
定数名: HOGE_BOKE
ですので、JavaScript でも名前空間っぽいオブジェクトは hoge とすべきでしょう。
回答ありがとうございました。
>Hoge はグローバルスコープの変数で、
>変数が指し示すのが名前空間「っぽい」オブジェクトです。
>そもそも JavaScript には言語的に名前空間がありませんが、
>慣習的に名前空間「っぽい」オブジェクトの書き方があります
・説明分かりやすかったです
・命名規則アドバイスもありがとうございました
・大変参考になりましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- C言語・C++・C# C#のSystem.Windows.Media.Colorに関する質問です。 3 2022/05/18 11:51
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- その他(プログラミング・Web制作) pythonのcondaコマンドの仕様について 2 2022/06/24 00:13
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
VBA 同じ名前のオブジェクトを...
-
VBAのWindowオブジェクトとWork...
-
Object型からDouble型へのキャスト
-
VBSでのステートメントの末尾が...
-
withを入れ子にして使う方法
-
VBA 下記ソースについて質問で...
-
JAVAからHTMLへ値を返す方法
-
VBでExcelオブジェクトを引数を...
-
Unity,C#、複数の子オブジェク...
-
関数オプジェクトとは
-
開始日(Date型)から終了日(Date...
-
Rangeオブジェクトに格納できない
-
オブジェクト指向の間違いと改...
-
0埋めについて
-
インデザインのテキスト回り込み
-
【C++/CLI】 gcnewしたオブジェ...
-
Google Apps Scriptの時刻の計算
-
bmp画像をjpegやpng画像に圧縮...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
vb.net オブジェクト指向につい...
-
COMコンポーネントって何?
-
オブジェクトレベルとメタレベル
-
ビジュアルC++でボタンの有...
-
時間帯判定をする。
-
LISTBOXの内容が更新されま...
-
VBA 同じ名前のオブジェクトを...
-
オブジェクト名をforループ内で...
-
Object型からDouble型へのキャスト
-
ADO オブジェクトの渡し方
-
bmp画像をjpegやpng画像に圧縮...
-
Vbで通常使用するプリンターを...
-
戻り値がクラスオブジェクト
-
VBAでvlookup関数から、別シー...
おすすめ情報