javascript Module 模式基本用法

本文详细介绍了JavaScript中闭包的概念与应用,以及模块化编程的实现方式,包括匿名闭包、引用全局变量和基本的Module模式。通过具体代码示例,展示了如何在实际项目中灵活运用这些高级特性。
var Calculator = function (eq) {
    //这里可以声明私有成员
    
    var eqCtl = document.getElementById(eq);

    return {
        //暴露公开成员
        sum: function (x, y) {
            var val = x + y;
            eqCtl.innerHTML = val;
        }
    }
}
var cclt = new Calculator('great');
cclt.sum(2015, 1028);

大家可能看到了,每次用的时候都要new一下,也就是说每个实例在内存里都是一份copy,如果你不需要传参数或者没有一些特殊苛刻的要求的话,我们可以在最后一个}后面加上一个括号,来达到自执行的目的,这样该实例在内存中只会存在一份copy。

 

匿名闭包:

下面的是推荐写法,

(function () {
    // ... 所有的变量和function都在这里声明,并且作用域也只能在这个匿名闭包里
    // ...但是这里的代码依然可以访问外部全局的对象
}());

你也可以这样声明,

(function () {/* 内部代码 */})();

 

引用全局变量

(function ($, YAHOO) {
    // 这里,我们的代码就可以使用全局的jQuery对象了,YAHOO也是一样
} (jQuery, YAHOO));

不过,有时候可能不仅仅要使用全局变量,而是也想声明全局变量,如何做呢?我们可以通过匿名函数的返回值来返回这个全局变量,这也就是一个基本的Module模式,来看一个完整的代码:

var blogModule = (function () {
    var my = {}, privateName = "博客园";

    function privateAddTopic(data) {
        // 这里是内部处理代码
    }

    my.Name = privateName;
    my.AddTopic = function (data) {
        privateAddTopic(data);
    };

    return my;
} ());

 

转载于:https://www.cnblogs.com/Zell-Dinch/articles/4760328.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值