namespace

YUIのコードで見つけた名前空間定義関数。
以下はグローバルをYAHOOからthisに変えただけ。

GLOBAL = this;
namespace = function(ns, global) {
  if (!ns || !ns.length) {
    return null;
  }

  var levels = ns.split(".");
  if (typeof(global) == "undefined") {
    global = GLOBAL;
  }
  var nsobj = global;

  for (var i=(levels[0] == global) ? 1 : 0; i<levels.length; ++i) {
    nsobj[levels[i]] = nsobj[levels[i]] || {};
    nsobj = nsobj[levels[i]];
  }

  return nsobj;
};