zoukankan      html  css  js  c++  java
  • Module模式

    匿名函数闭包
    (function () {
            // ... all vars and functions are in this scope only
            // still maintains access to all globals
    }());      
     
    注意在匿名函数外面的括号。这是由于在JavaScript中以function开头的语句通常被认为是函数声明。
    加上了外面的括号之后则创建的是函数表达式。
     
    全局导入
    JavaScript有一个特征叫做隐藏的全局变量。当一个变量名被使用,编译器会向上级查询用var来声明这个变量的语句。如果没有找到的话这个变量就被认为是全局的。如果在赋值的时候这样使用,就会创建一个全局的作用域。这意味着在一个匿名的闭包中创建一个全局变量是十分容易的。不幸的是 ,这将会导致代码的难以管理,因为对于程序员来说,如果全局的变量不是在一个文件中声明会很不清晰。幸运的是 ,匿名函数给我们另一个选择。我们可以将全局变量通过匿名函数的参数来导入到我们的代码中,这样更加的快速和整洁。
     
    在Javascript中只有程序和函数才会创建新的作用域,if 语句之类的不会
     
    (function ($, YAHOO) {
    // now have access to globals jQuery (as $) and YAHOO in this code
    }(jQuery, YAHOO));
     
    Module导出
    有时你并不想要使用全局变量,但是你想要声明他们。我们可以很容易通过匿名函数的返回值来导出他们。关于Module模式的基本内容就这么多,这里有一个复杂一点的例子。
     
    var MODULE = (function () {
            var my = {},
                    privateVariable = 1;

            function privateMethod() {
                    // ...
            }

            my.moduleProperty = 1;
            my.moduleMethod = function () {
                    // ...
            };

            return my;
    }());
     
    这里我们声明了一个全局的module叫做MODULE,有两个公有属性:一个叫做MODULE.moduleMethod的方法和一个叫做MODULE.moduleProperty的变量。另外他通过匿名函数的闭包来维持私有的内部状态,当然我们也可使用前面提到的模式,轻松导入所需的全局变量
  • 相关阅读:
    !function() {}()
    element.dataset API
    正则匹配 数字和英文状态下的逗号
    《vim实用技巧》读书笔记
    ajax分页
    smarty分页类
    数组排序
    数组大类
    自动刷新价格
    简单购物车
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5162392.html
Copyright © 2011-2022 走看看