var company = company || {} ;
company.doSomething = function() {
};
company.test = {};
company.test.submodule = {};
company.test.submodule.doSomething = function() {};
company.api = {};
company.api.submodule = {};
通常、変数をグローバルに定義することは避けてください。保守しやすいコードを明確にするには、オブジェクトを名前空間として使用し、グローバル名前空間を汚染しないようにします。
これにより、デフォルトの JS 機能も大幅に強化されます。あなたが本当にそれに熱心なら、require.js
あなたのプロジェクトに のようなものを追加してください。そうすれば、とても素敵な Java のような機能を手に入れることができます。
したがって、require.js
とcompany.api
をJava で行うのと同じように、company.test
と を異なるファイルに配置することができます。require
import company.test
package
ネームスペースは非常に効率的な方法です。あなたは得る:
- 読みやすさ(世界で最も重要なこと!!)。
- 保守性。
- より高速なデバッグ。
- より速いアップグレード。
- ロジックと機能の効率的な分割。
- IE
window
対global
オブジェクトのバグを防ぎます。
- チームでの作業を可能にし、快適にします。
- 開発を大幅にスピードアップします。ほとんどの IDE は、名前空間オブジェクトにインデックスを付けて自動入力します。
- jsDoc タグを効果的に使用して、JavaScript コードを文書化できます。
重要
またthis
、静的なコンテキストで使用するのはかなり危険です。JavaScript の命名規則では、static は小文字の char で始まる名前が付けられ、クラスは大文字の char で始まる名前が定義されます。もちろん、camelCase を使用してください。
繰り返しますが、非常に強力で便利な規則です。開発者に、何かが静的またはクラスであることを瞬く間に伝えます。たとえば、次の場合:
company.test.submodule.doSomething = function() {
// this is a static function. It's a normal property, it's not nested under the prototype.
};
this
代わりに、クラスを作成する場合は、参照を正しい方法で使用できます。
// Notice Person starts with uppercase P.
company.test.subModule.Person = function(name) {
this.name = name;
this.numberOfEyes = 2;
};
company.test.subModule.Person.prototype.cryMeARiver = function() {
console.log(this.name + " can cry a river.");
};
他の関数の中で、次のことができます。
company.api.someSubModule.peopleCryRivers = function() {
// this is again a static context.
var bodgan = new company.test.subModule.Person("Bogdan");
var andreea = new company.test.subModule.Person("Andreea");
bodgan.cryMeARiver();// will output "Bogdan can cry a river."
andreea.cryMeARiver();// will output "Andreea can cry a river."
// etc..
};