Java と C# を使用したことのある学生は、複雑なシステムでは、プログラミング仕様により、言語によって提供され、アーキテクチャによって事前定義された多くの関数やオブジェクトが存在します。実用的な意味を持つ名前を要求すると、同じ名前による誤った呼び出しが発生することは避けられません。しかし、名前空間を使用すると、関数とオブジェクトを分類して整理するだけでなく、分離を形成することもできます。重複した名前の問題を解決します。
JavaScript の使用はそれほど快適ではありません。JavaScript には関数スコープしかありません。重複した名前によって引き起こされるエラーは、デバッグや解決が困難になることがあります。
簡単な例
JavaScript にはファイル スコープがないため、さまざまな関数がさまざまなファイルに散在しているか、さまざまな人によって記述されているため、名前が重複する可能性が大幅に高くなります。十分に注意するだけで十分でしょうか?必ずしもそうとは限りませんが、例えば継承がよく使われるので、思いがけずEcmaScript5にextend関数が追加されたり、ネームスペースの必要性が反映されたりすることもあります。
JavaScript には関数スコープがあり、これを使用してカスタム関数を関数本体に記述することができるため、関数内の変数、オブジェクト、関数は名前空間内にある場合と同様に外部から分離されます。
これは可能ですが、問題があります。最大の問題は、呼び出し方法が複雑で見苦しいことです。オブジェクトは呼び出されるたびにインスタンス化され、その後そのメソッドを呼び出す必要があります。自動インスタンス化を実現するには、コードを変更するだけです。
コードをコピー