자바스크립트는 네임스페이스를 공식적으로 지원하지 않지만 아래의 코드를 가지고 간단히 처리 가능하다.
QJS = { Namespace: { make: function (nsname) { var w = nsname.split ("."); var x;
/* for (var i = 0; i < w.length; i++) { if (i == 0) x = w[i]; else x = x + "." + w[i]; eval ("if (typeof " + x + " == 'undefined') " + x + "= {};"); }
x = eval (nsname + ";"); */ for (var i = 0; i < w.length; i++) { if (i == 0) { x = eval ("if (typeof " + w[i] + " == 'undefined') " + w[i] + "= {}; " + w[i] + ";"); } else { if (typeof x[w[i]] == 'undefined') x[w[i]] = {}; x = x[w[i]]; //x.name = w[i]; } }
return x; },
kill: function (nsname) { eval ("delete " + nsname + ";"); }
} }
|
사용법은 간단하다.
QJS.Namespace.create ("net.abiyo.NS"); net.abiyo.NS.Test = { x: 10, y: 20 };
QJS.Namespace.kill ("net.abiyo.NS")는 편의를 위해 제공되나 네임스페이스에 대한 레퍼런스가 있는경우 완전히 없애지는 못한다. var ns = QJS.Namespace.make ("net.abiyo.NS"); ns.Test = { x: 10, y: 20 }; QJS.Namespace.kill ("net.abiyo.NS"); alert (ns.Test.x);
|