欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript-命名空间

程序员文章站 2022-07-13 17:57:23
...

命名空间:管理变量,防止污染全局,适合模块开发。

一个网页,软件的开发不可能是一个工程师完成的,那么多个工程师完成同一个项目的时候,命名重复问题肯定是有的,那么如何解决这个问题了。

看下面代码

        var name='lyc';
        var init=(function() {
            var name='cyl';
            function callName() {
                console.log(name);
            }
            return function() {
                callName();
            }
        }())
        init();

打印结果是cyl,清楚闭包的应该知道了,这里形成了闭包callName用的是那个立即执行函数的作用域链,就找到name了,

而外面是找不到里面的name的,这里就很好的利用了闭包的性质,避免了命名问题,用于模块化开发,避免全局污染。

我们只需要把接口(函数)返回到外面,就可以使用你实现的功能了。

JavaScript-命名空间


JavaScript-命名空间JavaScript-命名空间这是别人实际开发的时候实现的一个功能,就是这样做的。


还有一种方法,看一下如下代码:

        var OBJ={
            temp1:{
                Case1:{
                    name:'cyl',
                    age:19,
                    school:'wust',
                    sex:'male'
                },
                Case2:{
                    name:'cyh',
                    age:19,
                    school:'wust',
                    sex:'famale'
                }
            }
        }

我们把一个工程师需要用的变量啊,函数啊什么的全部放在一个对象中,不同的程序员使用不同的“空间”,互相不干扰。

使用with(target)方法调用。

with(target) 可以将下面的代码“放在”target的作用域连顶端,也就是说下面代码使用的变量函数将会沿着target的作用域链寻找。

        var OBJ={
            temp1:{
                Case1:{
                    name:'cyl',
                    age:19,
                    school:'wust',
                    sex:'male'
                },
                Case2:{
                    name:'cyh',
                    age:19,
                    school:'wust',
                    sex:'famale'
                }
            }
        }
        with(OBJ.temp1.Case1) {
            console.log(name+" "+sex);
        }
        with(OBJ.temp1.Case2) {
            console.log(name+" "+sex);
        }

JavaScript-命名空间

是不是也可以勒!不过方法没有上面的第一种好咯,而且在ES5严格标准下,with()方法被禁用了。