名前空間を宣言するための関数
by opengl_8080
HTML
<h2>参考</h2>
<a href="http://www.oreilly.co.jp/books/9784873114880/">O'Reilly Japan - JavaScriptパターン</a>
<div id="console"></div>
JavaScript
function namespace(base, ns) {
var parts = ns.split('.');
var parent = base;
for (var i=0; i<parts.length; i++) {
if (typeof parent[parts[i]] === 'undefined') {
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
}
var mine = mine || {};
(function() {
namespace(mine, 'hoge.fuga');
mine.hoge.fuga.myFunc = function(message) {
var console = document.getElementById('console');
console.innerHTML = message;
};
mine.hoge.fuga.myFunc('hello namespace');
}());
/*
mine.namespace = function(ns_string) {
var parts = ns_string.split('.'),
parent = mine,
i;
console.log('1: ' + parts);
if (parts[0] === 'mine') {
parts = parts.slice(1);
console.log('2: ' + parts);
}
for (i = 0; i < parts.length; i++) {
console.log('i=' + i + ', parent=' + parent);
if (typeof parent[parts[i]] === 'undefined') {
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
};
//*/