名前空間使ってモジュールをObjectにまとめるグローバルの変数の濫用を避ける"古の"ベストプラクティス
ここではLoggerを実装してみる。
window.Logger = window.Logger || {}; window.Logger = { LEVEL: { RUN : 0, ERROR : 1, WARN : 2, LOG : 3, INFO : 4, DEBUG : 5, FULL : 5, }, level: null, init: function(level) { console.log(this.LEVEL.FULL) this.level = level || this.LEVEL.FULL; }, debug: function(msg) { (this.level >= this.LEVEL.DEBUG) && console.debug(msg); }, info: function(msg) { (this.level >= this.LEVEL.INFO) && console.debug(msg); }, log: function(msg) { (this.level >= this.LEVEL.LOG) && console.debug(msg); }, warn: function(msg) { (this.level >= this.LEVEL.WARN) && console.debug(msg); }, error: function(msg) { (this.level >= this.LEVEL.ERROR) && console.debug(msg); } };
以下のコードは名前空間の競合を避けるための書き方
window.Logger = window.Logger || {};
参考