[JavaScript General] JavaScript で名前空間を作成する
クラス名が競合しないようパッケージにまとめる。
[markdown]
ES5 までは、空のオブジェクトを利用して「名前空間のようなもの」を作成していた。
“`javascript
var MyApp = MyApp || {};
MyApp.Member = function(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
};
MyApp.Member.prototype = {
getName: function() {
return this.lastName + ‘ ‘ + this.firstName;
}
};
var member = new MyApp.Member(‘タロウ’, ‘ヤマダ’);
console.log(member.getName());
“`
これからは ES2015 のモジュールインポートを利用できる。
ブラウザ非対応のため Babel などのトランスパイラの利用が前提。
> * [import – JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import)
“`javascript
import * as MyApp from “./lib/myApp.es6.js”;
console.log(“2π = ” + MyApp.sum(MyApp.pi, MyApp.pi));
import * as math from “./lib/math.es6.js”;
console.log(“2π = ” + math.sum(math.pi, math.pi));
“`
## 補遺
* [javascript – How to namespace es6 classes (for React components) – Stack Overflow](http://stackoverflow.com/questions/32230966/how-to-namespace-es6-classes-for-react-components)
* [JavaScript モジュール・クラス総括(2015年7月) – Qiita](http://qiita.com/nowri/items/3ebadf71bbdfacf186aa)
[/markdown]