ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript名前空間の使い方入門_JavaScriptスキル

JavaScript名前空間の使い方入門_JavaScriptスキル

WBOY
リリース: 2016-05-16 17:24:10
オリジナル
1647 人が閲覧しました

Java と C# を使用したことのある学生は、複雑なシステムでは、プログラミング仕様により、言語によって提供され、アーキテクチャによって事前定義された多くの関数やオブジェクトが存在します。実用的な意味を持つ名前を要求すると、同じ名前による誤った呼び出しが発生することは避けられません。しかし、名前空間を使用すると、関数とオブジェクトを分類して整理するだけでなく、分離を形成することもできます。重複した名前の問題を解決します。

JavaScript の使用はそれほど快適ではありません。JavaScript には関数スコープしかありません。重複した名前によって引き起こされるエラーは、デバッグや解決が困難になることがあります。

簡単な例

コードをコピー コードは次のとおりです:





test2();
//....
}

test2(){
functionalert('test2')



この例では、ブラウザによってパフォーマンスが異なります。IE はスタック オーバー フローを報告し、Firefox は停止します。 。 。とにかく、これは非常に単純なエラーです。このように、test2 関数は、alert 関数内で呼び出されます。ループ内で呼び出されます。これを読んだら誰が間違いを犯すかわかりませんが、カスタム メソッドが close で呼び出されると (これはよく起こります)、外部ファイル関数が内部で呼び出されます。 、関数がウィンドウの close メソッドを呼び出すと、エラーは大幅に隠蔽されます。

単純な名前空間

JavaScript にはファイル スコープがないため、さまざまな関数がさまざまなファイルに散在しているか、さまざまな人によって記述されているため、名前が重複する可能性が大幅に高くなります。十分に注意するだけで十分でしょうか?必ずしもそうとは限りませんが、例えば継承がよく使われるので、思いがけずEcmaScript5にextend関数が追加されたり、ネームスペースの必要性が反映されたりすることもあります。

JavaScript には関数スコープがあり、これを使用してカスタム関数を関数本体に記述することができるため、関数内の変数、オブジェクト、関数は名前空間内にある場合と同様に外部から分離されます。


alert=function(){
console.log('test');
}
}




このようにして、カスタマイズされたアラート方法はウィンドウアラートと競合しません。
単純な進化

これは可能ですが、問題があります。最大の問題は、呼び出し方法が複雑で見苦しいことです。オブジェクトは呼び出されるたびにインスタンス化され、その後そのメソッドを呼び出す必要があります。自動インスタンス化を実現するには、コードを変更するだけです。

コードをコピー

コードは次のとおりです:



最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート