Team 專案中js衝突

來源:互聯網
上載者:User

標籤:變數   window   之間   匿名函數   概念   項目   log   函數   nbsp   

     在我們平時的項目中,特別是模組化開發中。經常會遇到一些js衝突問題,特別是當項目複雜到一定程度的時候。比如項目中引入了相當多的類庫,架構以後。

那麼。我們如何去避免或者解決這類問題呢?

     1、避免使用全域變數。

  2、使用匿名函數的方法來把自己的模組包起來。這樣你所定義的變數 就只能在這個匿名函數中使用了。

 

  如果存在模組之間的通訊怎麼辦呢?我們可以適量的使用全域

  例如:

   var win={};//全域對象
        (function(){//匿名函數A
            win.str1="aaa";
        })();
        
        (function(){//匿名函數B
            console.log(win.str1);
        })();

  這樣你就可以在函數B中使用函數A中的變數。但是會存在一個問題。就是,B中如果有一個變數跟A中的命名一樣,那就會產生覆蓋。

這樣就用到了一個叫命名空間的概念!

命名的時候加上一個首碼。window下的全域變數.命名空間.變數名

var win;    
win={};    //一級命名
win.A = {};   //二級命名
(function(){
    win.A.str1="qqq";})();


win.B={};
(function(){
    console.log(win.A.str1);
    win.B.str1="aaa";
    console.log(win.B.str1);
})();

這是一種解決問題的辦法吧,如有大神看到。忘指點!

 

Team 專案中js衝突

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.