Javascript四种单体模式

来源:互联网 发布:java 过滤换行 空格 编辑:程序博客网 时间:2024/05/15 06:31
<span style="font-size:18px;">/** * 单体模式 * 划分命名空间 *//*1 简单单体 */var singleton={    name:"zhang",    age:11,    sayHello:function(){        console.log(this.age);    }};</span>


<span style="font-size:18px;">/** *单体模式 2 闭包单体 保护数据 不受外界干扰 */var singlton=(function(){    /**     * 添加自己的私有成员     */    var x="qi";    var sayBye=function(){        console.log("bye");    };    /**     * 把块级作用域中的执行结果赋值给对象     */    return {        name:x,        age:11,        sayHello:function(){            return sayBye();        }    };}());singlton.sayHello();</span>

<span style="font-size:18px;">/** * 3 惰性单体 */var singlton=(function(){    /**     * 私有变量用于控制返回的私有成员     */    var instance;    /**     * 建立初始化函数 添加自己的私有成员     */    function init(){        var name="zhang";        var age=11;        return {            name:name,            age:age        }    }    /**     * 把块级作用域中的执行结果赋值给对象     * 只有在调用getInstance方法时才会创建对象并返回     * 最初的时候不会创建这个对象中具体的实例对象,性能更高     *     */    return {        getInstance:function(){            if(!instance)                instance=init();            return instance;        }    };}());console.log(singlton.getInstance().age);</span>

<span style="font-size:18px;">/** * 4 分支单体 判断程序的分支 浏览器的差异检测 */var flag=false;var singleton=(function(){    var firefox={        name:"firefox"    };    var chrome={        name:"chrome"    };    return flag?firefox:chrome;}());console.log(singleton.name);</span>


0 0
原创粉丝点击