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();
    }

 

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