[JavaScript General] JavaScript で名前空間を作成する

クラス名が競合しないようパッケージにまとめる。

ES5 までは、空のオブジェクトを利用して「名前空間のようなもの」を作成していた。

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 * 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));

補遺