JavaScript は単に名前空間effect_javascriptスキルを実装するだけです

WBOY
リリース: 2016-05-16 16:56:55
オリジナル
1098 人が閲覧しました

JavaScript は名前空間をネイティブにサポートしていないため、回避策が必要です。

JavaScript ライブラリを作成する場合、名前空間は非常に重要です。グローバル関数やクラスを定義せずに、この JavaScript ライブラリを構成する散在する JavaScript ファイル (*.js) を名前空間にカプセル化できます。たとえば、この章で何度も登場する person は、ライブラリの一部として適切な名前空間にカプセル化できます:

コード 5-13:

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

var com = {};
com.anyjava = {};
com.anyjava.person = function(name) {
//プライベートメンバー
var _name = name;

//Accessor
this.getName = function() {
return _name;
};
this.setName = function(name) {
_name = name;
};
};
//Prototype
com.anyjava.person.prototype = {
Eat:function() {
alert(this.getName() " は食べています何か。 ");
},
sleep:function() {
alert(this.getName() " は眠っています。");
},
walk:function() {
alert(this.getName() " は歩いています。");
}
};
var dirk = new com.anyjava.person("Dirk");
dirk.eat () ;

コード 5-13 から、Java 開発者の習慣により沿った名前空間が得られます。また、Person オブジェクトをインスタンス化するときに、コマンド空間パスも指定する必要があります。

ここでちょっとしたヒントを紹介します。他の人が開発した、比較的完全な名前空間計画を持った JavaScript ライブラリを使用している場合、毎回長い名前空間を記述することにイライラするかもしれません。たとえば、私が開発した JavaScript ライブラリを com.anyjava.control.ui 名前空間で使用している場合、使用したい拡張 UI コントロールが多数あるため、var xxx = new com と記述する必要はないと思います。 .anyjava.control.ui.XXX() を何度も繰り返します。コード 5-14 に示すように、名前空間のエイリアスを指定することで、コード 5-13 で person をインスタンス化する別の方法である、 のように、繰り返しの少ないコードを作成できます。

コード 5-14:

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

var ns = com.anyjava;
var dirk = new ns.person("Dirk");
dirk.eat();

私が最後にやったこと名前空間を使用する際に注意する必要がある問題について説明します。 JavaScript ライブラリを作成する場合、ほとんどの場合、名前空間宣言ステートメントは JavaScript ファイル内の複数の場所に同時に出現するか、複数の JavaScript ファイルに出現します。ただし、JavaScript 言語の特徴として、最後に宣言された変数が以前に宣言された変数が上書きされます。同じ名前の変数では、宣言の繰り返しの問題に注意する必要があります。つまり、コード 5 に示すように、名前空間オブジェクトを宣言するたびに、最初にその名前空間オブジェクトが存在するかどうかを確認することをお勧めします。 15:

コード 5-15:

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

if (typeof com.anyjava == "unknown") var com.anyjava = {};

このようにして、「com.anyjava」オブジェクトのみが宣言されていることを確認できます。一度。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート