com.example.foo.baaのような入れ子のオブジェクトを作って名前空間として活用することはよく行われるが、そのような多段入れ子のオブジェクトを一発で作る関数。これがないと面倒くさい。大抵のライブラリには入っているかもしれない。
function namespace(str) {
var names=str.split(".")
, i, l, cur = Function("return this")()
;
for (i=0,l=names.length; i<l; i++) {
cur[names[i]] = cur[names[i]] || {};
cur = cur[names[i]];
}
return cur;
}
//使い方
namespace("com.example.foo.baa");
console.log(com); // {example: {foo: {baa: {} } } }