次のように、CommonJS、AMD、およびブラウザーのグローバル全体で使用できるモジュールを定義する UMD スタイルでモジュールを定義しています。
(function (root, factory) {
if (typeof define === 'function' && define.amd) define(['exports'], factory);
else if (typeof exports === 'object') factory(exports);
else factory(root.GlobalObject = {});
})(this, function (exports) {
// Module definition here
});
これは、エクスポートされたオブジェクトにプロパティをアタッチしたい場合に最適ですが、この定義から単一のコンストラクター関数を返すだけで、3 つのシステムすべてがこのモジュールをロードし、返された関数を直接使用できるようにしたい場合はどうでしょうか。オブジェクト リテラルを返し、リテラルのプロパティとしてコンストラクターにアクセスする必要がありますか?