私が出会ったJavaScript-ネーミングスペース

2857 ワード

詳細
昨年1年間はプロジェクトに従っていたが、バックグラウンドからフロントエンドまで、javaからjavascriptまで、何も知らないからいくつかの考え方まで、無知に対する恐怖から需要に直面するまで淡々としていたが、自分のリラックスのため、タイムリーにまとめられず、自分のブログに書いて自分の収穫とミスを記録した.今年は書き続けて、自分のために頑張ってほしいです!
人は理想を抱くことができるが、現実を踏まなければならない.---go.
プロジェクトの多くの仕事は重複したコピーと貼り付けの修正ですが、この重複の退屈な過程で、自分の思考を引き起こしました.本当にそうする必要がありますか?本当にそうするしかないの?もっと良い方法があるのではないでしょうか.繰り返し抽出してパッケージ化できるのではないでしょうか.しかし、プロジェクト全体が同じスタイルで、修正すると再び来たことになり、甲は待つことができず、プロジェクトマネージャーも待つことができず、私も待てない誤った結論を得て、何度も修正する勇気がなく、何度も葛藤の中に入った.
現在の原因は個人的に以下の点だと思います.
1)コアコードが経験豊富でない者は書く;
2)自分は惰性で、一葉の障壁は泰山に会いたくない.
3)実際のプロジェクトの進度は厳格にコントロールする.
 
愚痴をこぼしたが、今年自身が克服しなければならない困難でもあり、
1)経験豊富な人はオープンソースのプロジェクトを見て、宝を洗って京東がどのように書いたかを見ることができます.
2)惰性は治すことを渇望し、成果を渇望し、収穫を渇望し、学ぶことを渇望し、自己価値を実現する.
3)プロジェクト開発過程でできるだけ変更しなくても完成する機能モジュールは、新しい思想、新しいコードスタイル、反復開発を徐々に導入し、プロジェクトの進度を維持する.
本題jsのネーミングスペースに入る:
  1.ネーミングスペースの由来
jsにはクラス、オブジェクトなどの概念、変数、関数がなく、クラスの関連メカニズムはプロトタイプによって実現されている.そこで簡単な項目でfunctionを直接定義すると、もちろん自分の単語の量で十分です.しかし、大規模なプロジェクトでは、複数のグループが共同で開発され、コード量が大きいと、変数名、関数名などの様々な衝突を招き、エラーの発見と修正とコードの管理と維持が困難になる.
ネーミング空間namespaceは上述の問題を解決する有効な方法である.Yahooのような大規模なサイトには、独自のネーミングスペースがあります.
2.ネーミングスペースの役割
1)異なるjsファイルにおけるネーミング競合を回避する.
2)共同開発は管理しやすい;
3)コードスタイルを統一し、学習、上手、メンテナンスに便利である.  
3.jsのネーミングスペース
  

        //         Namespace,        
 Namespace = new Object();
 
//         register  ,          , "Grandsoft.GEA"
 Namespace.register = function(fullNS)
 {
     //        N  ,   Grandsoft、GEA 
     var nsArray = fullNS.split('.');
     var sEval = "";
     var sNS = "";
     for (var i = 0; i < nsArray.length; i++)
     {
         if (i != 0) sNS += ".";
          sNS += nsArray[i];
         //             (       )   
         //      Grandsoft,    Grandsoft.GEA,    
          sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"
      }
     //  eval           ,     
     if (sEval != "") eval(sEval);
 }   

4.プロジェクトでの使用方法
yuiのネーミング方式
 
var YAHOO = window.YAHOO || {};
 

YAHOO.namespace = function(ns) {
 
    if (!ns || !ns.length) {
         return null;
      }
 
    var levels = ns.split(".");
     var nsobj = YAHOO;
 
    // YAHOO is implied, so it is ignored if it is included
     for (var i=(levels[0] == "YAHOO") ? 1 : 0; i 
 

: http://www.cnblogs.com/Ihaveadream/archive/2008/06/04/1213611.html
https://developer.mozilla.org/zh-CN/docs/XUL_School-840092-dup/JavaScript_Object_Management