zoukankan      html  css  js  c++  java
  • JS命名空间

    命名冲突

    全局变量会绑定到 window 上,不同的javascript文件如果使用了相同的全局变量,或者定义了相同名字就的顶层函数,都会造成命名冲突,并且很难被发现。

    减少冲突的一个办法,把自己的所有变量和函数全部绑定到一个全局变量中:

    <script type="text/javascript">
        var MYAPP = {};  // 定义全局唯一的变量MYAPP
    
        MYAPP.name = 'haha';  // 定义自己的变量
    
        // 定义自己的方法
        MYAPP.foo = function() {
            return 'Foo';
        };
    
        // 调用方法
        ret = MYAPP.foo();
        alert(ret);
        alert(MYAPP.name);
        
    </script>

    说明:

    这里我们将变量和方法封存在 全局唯一变量 MYAPP中,在调用其中的属性和方法的时候,必须加上唯一变量名。

    这样即使内部属性和方法同名,只要前面的唯一变量名不同名,都能正常执行,不回存在命名冲突。

    解决方法验证

    当我们将属性和方法封存在全局 唯一变量 中,然后外面直接调用:

    <script type="text/javascript">
        var MYAPP = {};  // 定义全局唯一的变量MYAPP
    
        MYAPP.name = 'haha';  // 定义自己的变量
    
        // 定义自己的方法
        MYAPP.foo = function() {
            return 'Foo';
        };
    
        // 调用方法
        ret = foo();
        console.log(ret); // 报错
    
        r = name;
        console.log(r); // 报错
    
    </script>
    方法

    说明:

    结果报错!

    定义两个全局唯一变量,然后里面属性和方法同名,通过全局唯一变量名进行调用:

    <script type="text/javascript">
        // 定义全局唯一的变量MYVAR01,并定义自己的属性和方法
        var MYVAR01 = {
            name: 'xxx',
    
            foo: function() {
                return 'xxxx';
            },
        };
    
        // 定义全局唯一的变量MYVAR02,并定义自己的属性和方法
        var MYVAR02 = {
            name: 'ooo',
    
            foo: function() {
                return 'oooo';
            }
        };
    
        // 调用MYVAR01的方法
        r1 = MYVAR01.name;
        console.log(r1);
        r2 = MYVAR01.foo();
        console.log(r2);
    
        // 调用MYAVAR02的方法
        r3 = MYVAR02.name;
        console.log(r3);
        r4 = MYVAR02.foo();
        console.log(r4);
    
    </script>
    方法

    结果:

    xxx
    xxxx
    ooo
    oooo

    注意:

    在变量中写方法和在变量外面写方法,方式是不一样的。注意区分写法。

  • 相关阅读:
    做一个项目,平时都用到哪些工具提高效率(上)
    做项目时,如何做比较美观大方的数据输入窗体
    做一个项目,平时都用到哪些工具提高效率(中)
    类型的初试化器的调用时机
    数据加密小工具
    ASP.NET 开发知识小结
    做一个项目,平时都用到哪些工具提高效率(下)
    两道面试题目 关于new和override的
    js技巧,js找到html中的注释,js让客户端另存一段文本
    在适当的场合使用FlagsAttribute修饰枚举
  • 原文地址:https://www.cnblogs.com/jayafs/p/6225257.html
Copyright © 2011-2022 走看看