JavaScriptが名前空間を作成する最も簡単な実現


最近はExtソースコードを見て、名前空間関数の実現方法が見られました。
Ext NameSpace実現コード: 
      

  namespace : function(){ 
            var a=arguments, o=null, i, j, d, rt; 
            for (i=0; i<a.length; ++i) { 
                d=a[i].split("."); 
                rt = d[0]; 
                eval('if (typeof ' + rt + ' == "undefined"){' + rt + ' = {};} o = ' + rt + ';'); 
                for (j=1; j<d.length; ++j) { 
                    o[d[j]]=o[d[j]] || {}; 
                    o=o[d[j]]; 
                } 
            } 
        } 
私は一番簡単なプログラミングが好きです。(これはいい習慣ではないので、簡単な手順を書けば書くほど、普通は分かりにくいです。)だから、もっと短い方法でこの問題を解決したいです。
約半時間にわたって次の実現を書いてみましたが、基本的に考慮すべき状況はすべて考慮して、少なくともページの既存の関数をカバーしません。
実現コードは以下の通りです。

function namespace(ns){ 
    if(typeof(ns)!="string")return; 
    ns=ns.split("."); 
    var o,ni; 
    for(var i=0,len=ns.length;i<len,ni=ns[i];i++){ 
       try{o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")))}catch(e){o=eval(ni+"={}")} 
    } 

以下のコードを保存してテストできます。
テストコード:

<script type="text/javascript"> 
  <!-- 
    function namespace(ns){ 
        if(typeof(ns)!="string")return; 
        ns=ns.split("."); 
        var o,ni; 
        for(var i=0,len=ns.length;i<len,ni=ns[i];i++){ 
            try{o=(o?(o[ni]=o[ni]||{}):(eval(ni+"="+ni+"||{}")))}catch(e){o=eval(ni+"={}")} 
        } 
    } 
    function a(){return 5} 
    namespace("a.b"); 
    alert(a); 
    alert(a.b) 
    namespace("test.test.abc") 
    test.test.abc.func1=function(){ 
        alert('func1 run') 
    } 
    alert(test.test) 
    test.test.abc.func1(); 
  //--> 
</script>