前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单体模式

单体模式

作者头像
Qwe7
发布2022-06-09 08:42:33
1010
发布2022-06-09 08:42:33
举报
文章被收录于专栏:网络收集

三、单体模式

单体模式是设计模式中最常用的一种。单体模式就是希望可以在使用方法创建对象的时候,我们无论创建多少次对象都指向同一个

1、普通创建对象方式

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
    
    function notSingle() {
        return {
            a: 1
        }
    }

    var a = notSingle()
    var b = notSingle()

    console.log(a === b) // 打印 false

    function notSingle2() {
        this.a = 123
    }

    var a1 = new notSingle2()
    var a2 = new notSingle2()

    console.log(a1 === b1); // 打印 false

    // 无论是使用函数,还是用构造函数的情况下,我们创建出来的对象都是相互独立的
    // 在绝大多数情况下,这也是我们所期望的结果,这是没问题的
    // 当在某些情况下,我们需要他们创建出来的返回的数据是已经被创建出来的对象数据,而不是再去创建出来的新的对象

    
    </script>
</head>
<body>
    
</body>
</html>

2、单体模式创建对象

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
    
    var _unique = null;

    function createSingle() {
        var obj = {
            a: 1
        }
        if (_unique === null) {
            _unique = obj
        }
        return _unique
    }

    var a = createSingle()
    var b = createSingle()

    console.log(a === b) // 打印true

    var a1 = createSingle()
    _unique = null // 在中途修改了_unique都会导致返回的对象不一致
    var b1 = createSingle()

    console.log(a1 === b1) // false

    var createSingle1 = (function() {
        var _unique = null;

        function single() {
            return {
                a: 1
            }
        }

        return function() {
            if (_unique === null) {
                // _unique = {
                //     a: 1
                // }
                _unique = single()
            } else {
                return _unique
            }
        }
    })()

    var a2 = createSingle1()
    var b2 = createSingle1()
    console.log(a2 === b2)

    </script>
</head>
<body>
    
</body>
</html>

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档