会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 128430个问题

  class Login1 {
            createout() {  //这个函数的返回值就是一个div标签
                var odiv = document.createElement('div');
                odiv.innerHTML = '我是一个登录框'
                document.body.appendChild(odiv);  //把这个div加进去
                odiv.style.display = 'none';  //这个登录框默认是不显示的
                return odiv
            }
        }
        class Singleton {  //这个是在初始化的时候 做一个动态判断 单例模式
            constructor(name) {
                if (Singleton.aaa) {  //有属性? 那么就返回这个属性  实际上后面再进来 返回的永远都是第一次进来的属性
                    return Singleton.aaa;
                }
                Singleton.aaa = this;  //第一次进来没有属性 你就等于我们this  
                this.name = name  //  即当前正在创建的实例  赋值给 Singleton.aaa。
            }
        }

        var l11 = new Login1();
        // var s11 = new Singleton(l11.createout());
        // var s2= new Singleton('222');
        // console.log(s1===s2);  //true   这里注释的是 测试我们创建2个实例对象 时候相等  验证单例模式时候成功
        var btn = document.getElementById('btn');
        btn.onclick = function () {
            // console.log('点击了一下');  //测试点击事件有无触发 
            var s11 = new Singleton(l11.createout());  //无论这个声明丢在哪里 他的对象s11永远只会生成一次
            s11.name.style.display = 'block';
        }

以上是用另外一种思路实现的 ,再类的初始化阶段 创建一个单例模式


主要是课堂这段话 闭包+判断每太能完全明白

return result || (result = fn.apply(this, arguments))


WEB前端全系列/第八阶段:JavaScript设计模式模块/JavaScript设计模式 1楼
WEB前端全系列/第八阶段:JavaScript设计模式模块/JavaScript设计模式 2楼
WEB前端全系列/第八阶段:JavaScript设计模式模块/JavaScript设计模式 5楼

百战程序员微信公众号

百战程序员微信小程序

©2014-2024 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637