javascript 模块化

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一直好奇像node.js,require.js的模块化是怎么做的,在看了《你不知道的javascript》后,对js的模块化有了一些简单的了解。这本书真的还不错。

书里讲述了js的模块化的原理 和  现代js实现模块化的简单的写法,下面直接上代码:

<script type="text/javascript">
        <!-- javascript 中的模块化 -->
        <!-- 创建定义模块函数 -->    
        var Module = (function(){
            var modules = {};

            //创建模块
            function define(name,deps,fun){//name:模块名称,deps:依赖模块,func: 模块方法

                for (var i = 0; i < deps.length; i++) {
                    deps[i] = modules[deps[i]]; 
                }
                modules[name] = fun.apply(fun,deps); //这里依赖注入的关键,把依赖的模块传给fun

            }

            //模块的get()
            function get(name){
                return modules[name];
            }

            return {
                define:define,
                get:get
            };

        })();

        //定义一个行为模块(喝酒)
        Module.define("drunk",[],function(){

            function drunking(){
                console.log("can drunk !");
            }

            return {
                drunking:drunking
            };
        });

        //定义一个模块,创建学生类
        Module.define("student",["drunk"],function(drunk){

            function CreateStudent(name,age,isDrunk){
                var obj = new Object();
                obj.name = name;
                obj.age = age;
                obj.eat = function(){
                    console.log("Everyone can eat !")
                };
                if (isDrunk) {
                    obj.du = drunk.drunking;
                } else {
                    obj.du = function(){
                        console.log("can not drunk !");
                    }
                }
                return obj;
            }
            return {
                createStudent:CreateStudent
            };
        });

        //测试

        var s1 = Module.get("student").createStudent("lee",12);
        s1.eat();
        s1.du();

转载于:https://my.oschina.net/u/3229305/blog/974028

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AD20学习笔记5---PCB设计规则设置及PCB手工布线

前言&#xff1a; 本文学习视频是B站点击率第一的凡亿教育《Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设计视频教程》&#xff0c;视频地址&#xff1a;Altium Designer 20 19&#xff08;入门到精通全38集&#xff09;四层板智能车PCB设…

理论物理极础9:相空间流体和吉布斯-刘维尔定理

莱尼喜欢看河&#xff0c;尤其喜欢看漂浮物顺流而下。他猜想漂浮物如何穿过礁石&#xff0c;如何陷入漩涡。但是河流整体&#xff0c;水量&#xff0c;流切变&#xff0c;河的分流和汇聚&#xff0c;这是莱尼所看不到的。 相空间流体 在经典力学里&#xff0c;注视一个特别的初…

nginx没有worker进程_如何优雅地关闭worker进程?

点击上方“武培轩”&#xff0c;选择“设为星标”技术文章第一时间送达&#xff01;之前我们讲解 Nginx 命令行的时候&#xff0c;可以看到 Nginx 停止有两种方式&#xff0c;分别是 nginx -s quit 和 nginx -s stop&#xff0c;其中 stop 是指立即停止 Nginx&#xff0c;而 qu…

RC电路输出波形的时域与频域分析

RC一阶电路为例进行时域和频域分析&#xff0c;激励Us为方波&#xff0c;以Uc作为输出的波形相当于积分电路的输出曲线&#xff0c;以Ur作为输出的波形相当于微分电路的输出曲线。电容对输入电压具有平滑作用&#xff0c;平滑程度与时间常数有关&#xff0c;衰减程度与带宽设计…

多麦克风做拾音的波束_麦克风阵列是什么 有哪些关键技术?

麦克风阵列是什么 有哪些关键技术&#xff1f;亚马逊Echo和谷歌Home争奇斗艳&#xff0c;除了云端服务&#xff0c;他们在硬件上到底有哪些差异&#xff1f;我们先将Echo和Home两款音箱拆开来看&#xff0c;区别最大的还是麦克风阵列技术。Amazon Echo采用的是环形61麦克风阵列…

如何用AD20打开ddb文件

用AD20直接打开ddb文件会报错&#xff0c;在AD20中使用导入向导才是ddb文件的正确打开方式。 1.用AD20直接打开ddb文件的报错提示 2.使用导入向导打开ddb文件 除了以下两处关键设置的地方&#xff0c;一路next就行。

Codeforces Round #419 (Div. 2)

1.题目A&#xff1a;Karen and Morning 题意&#xff1a; 给出hh:mm格式的时间&#xff0c;问至少经过多少分钟后&#xff0c;该时刻为回文字符串&#xff1f; 思路&#xff1a; 简单模拟&#xff0c;从当前时刻开始&#xff0c;如果hh的回文rh等于mm则停止累计。否则&#xff…

Java NIO 系列教程

Java NIO&#xff08;New IO&#xff09;是从Java 1.4版本开始引入的一个新的IO API&#xff0c;可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递。 &#xff08;关注ITeye官微&#xff0c;随时随地查看最新开发资讯、技术文章…

Multisim14仿真入门笔记

本文是B站北京邮电大学邓刚老师《Multisim仿真入门》的学习笔记&#xff0c;视频地址&#xff1a;【电路仿真】Multisim仿真入门&#xff08;北京邮电大学 邓刚主讲&#xff09;_哔哩哔哩_bilibili。 1.Multisim简介 Multisim14是一种专门用于电路仿真和设计的软件之一&#x…

office365在win7上使用订阅+win7在线升级win10就用它(亲测有效)

前言&#xff1a; 作为office365的重度使用用户&#xff0c;最近两天订阅到期&#xff0c;续订之后一直显示无法验证此订阅&#xff08;仅查看&#xff09;&#xff0c;office365未经授权&#xff0c;大多数功能已停用&#xff0c;狂晕&#xff01;&#xff01;&#xff01; 在…

HDU 4414 Finding crosses(搜索)

题目链接&#xff1a;HDU 4414 Finding crosses 【题目大意】 给你一张n*n的图&#xff0c;由o #这两个元素组成&#xff0c;让我们找其中有多少十字架。 十字架由#构成 十字架的纵向长度等于横向长度 &#xff0c; 且这个长度要为大于等于3的奇数。 构成十字架的#周围不能有多…

递归和分治思想及其应用

目录 递归和分治思想一些实例逆序输出字符串查找数组元祖是否存在汉诺塔问题八皇后问题更多&#xff1a;递归和分治思想 如果可以使用迭代&#xff0c;尽量别使用递归。由编译原理可以知道&#xff0c;每次自调用的时候&#xff0c;计算机都需要保存在调用&#xff0c;浪费时间…

AM+PM+FM基本调制原理及相关理论

总论&#xff1a; 调制信号&#xff1a; 模拟信号m(t)&#xff0c;可以是正弦波信号、方波信号等任意信号&#xff0c;又称基带信号 载波信号&#xff1a;一般为正弦波信号 已调信号&#xff1a; 幅度调制AM---A(t)随m(t)成比例变化----线性调制 相位调制PM---随m(t)成比…

win32 api 文件操作!

CreateFile打开文件要对文件进行读写等操作&#xff0c;首先必须获得文件句柄&#xff0c;通过该函数可以获得文件句柄&#xff0c;该函数是通向文件世界的大门。ReadFile从文件中读取字节信息。在打开文件获得了文件句柄之后&#xff0c;则可以通过该函数读取数据。WriteFile向…

小说里的lt什么意思_游戏cpdd网络用语是什么意思 王者荣耀里很常见

[闽南网]随着互联网的发展&#xff0c;越来越多的流行语横空出世&#xff0c;在网络上得到广泛使用。当一个网络语流行的时候&#xff0c;不管在微博上还是贴吧里&#xff0c;都会看见和流行语有关的句子和表情包。眼下在各种游戏里&#xff0c;总是能看到游戏玩家们说“cpdd”…

linux系统 硬链接和软链接

背景&#xff1a; 当几个用户同在一个项目里工作时。经常须要共享文件。假设一个共享文件同一时候出如今属于不同用户的不同文件夹下。工作起来就非常方便。比如B和C文件夹下有一文件D是两者都能够訪问和改动的共享文件&#xff0c;这样是非常方便&#xff0c;但也会有一些问题…

openssl 学习之从证书中提取RSA公钥N 和 E

原文链接: http://blog.csdn.net/kkxgx/article/details/19850509 通常数字证书包含很多信息&#xff0c;其中N和E值即我们称为的公钥。如何从PEM 或者DER格式的证书中提出证书呢&#xff1f;下面给出代码实现从PEM和DER编码的证书中提出N、E。 [cpp] view plaincopy #include …

Web browser的发展演变

我们每天都在使用着浏览器&#xff0c;每个人使用的浏览器各不一样。在这个科技飞速发展的时代&#xff0c;一个游览器能否站住脚跟取决于使用者的数量&#xff0c;看用户是否喜欢这个产品&#xff0c;听取用户们的意见来改善。 我们这个年龄的人最初用到的浏览器肯定是IE浏览器…

matlab 散点图 线性回归图_线性回归思路梳理

作者&#xff1a;夏雨骄阳 封面&#xff1a;自己想吧1简单线性回归1根据研究目的确定因变量和自变量。2判断有无异常值。通过绘制散点图直观观察&#xff1b;亦可通过线性回归的【统计】→【个案诊断】→【所有个案】进行分析&#xff0c;若标准残差超过[-3,3]&#xff0c;则…

物联网云端设计分析

物联网是世界信息产业发展的新浪潮&#xff0c;智能手表、智能手环、智能灯等物联网产品不断的改变着人们的生活方式。那这些产品是怎么设计出来的呢&#xff1f;其实物联网操作系统不光由本地物联网设备上的操作系统组成&#xff0c;还包括提供物联网终端设备支持的云端架构。…