JS命名空間with

JS命名空間

衆所周知一個頁面可能會被很多人開發,那麼這時候就有一個問題,那就是命名的重複(變量,函數名),所以爲了解決這個問題,命名空間就應用而生了。

可以先看如下代碼:

  var org  = {
    groupA:{
        tom:{
            name:"abc",
            sex:"man"
        },
        jerry:{
            name:"cde",
            age:'18'
        }

    },groupB{
        zhangWuji:{
            name:'xxx',
            sex:'woman'
        }
      }
  }
  org.groupA.jerry.name

那麼此時可以發現,如果要使用某個變量,那麼要層層調用,但是這回很麻煩,所以爲了更好的使用變量,可以使用臨時變量來代替,如下:

var jName = org.groupA.jerry.name

但是這也不是解決問題的根本,所以爲了根本解決這個問題,就要用到閉包

    var  init  =(function () {
        var name = "zsf";
        function  sayName() {
            console.log(name);
        }
        function saySex() {
            console.log("man");
        }

        return function () {
            sayName();
            saySex();
       }
    }())
 var x = init();

此時把一個要在全局執行的變量放到了一個局部裏面,所以避免了命名衝突而造成的代碼污染。

另外一種解決方法就是使用with

 var name = '222';
    var a = {
        name:'111',
        say:function () {
            console.log(this.name);
        }
    }

    var b ={
        name:'333',
        say:function (fun) {
                console.log(this.name);
         }
    }
    with(a){
        say();
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章