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

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值