• <legend id='c7OxB'><style id='c7OxB'><dir id='c7OxB'><q id='c7OxB'></q></dir></style></legend>

    <i id='c7OxB'><tr id='c7OxB'><dt id='c7OxB'><q id='c7OxB'><span id='c7OxB'><b id='c7OxB'><form id='c7OxB'><ins id='c7OxB'></ins><ul id='c7OxB'></ul><sub id='c7OxB'></sub></form><legend id='c7OxB'></legend><bdo id='c7OxB'><pre id='c7OxB'><center id='c7OxB'></center></pre></bdo></b><th id='c7OxB'></th></span></q></dt></tr></i><div id='c7OxB'><tfoot id='c7OxB'></tfoot><dl id='c7OxB'><fieldset id='c7OxB'></fieldset></dl></div>

      1. <small id='c7OxB'></small><noframes id='c7OxB'>

          <bdo id='c7OxB'></bdo><ul id='c7OxB'></ul>

        <tfoot id='c7OxB'></tfoot>

        JavaScript中的设计模式 单例模式

        时间:2023-12-09

            <small id='Ch3B2'></small><noframes id='Ch3B2'>

              <i id='Ch3B2'><tr id='Ch3B2'><dt id='Ch3B2'><q id='Ch3B2'><span id='Ch3B2'><b id='Ch3B2'><form id='Ch3B2'><ins id='Ch3B2'></ins><ul id='Ch3B2'></ul><sub id='Ch3B2'></sub></form><legend id='Ch3B2'></legend><bdo id='Ch3B2'><pre id='Ch3B2'><center id='Ch3B2'></center></pre></bdo></b><th id='Ch3B2'></th></span></q></dt></tr></i><div id='Ch3B2'><tfoot id='Ch3B2'></tfoot><dl id='Ch3B2'><fieldset id='Ch3B2'></fieldset></dl></div>

              <tfoot id='Ch3B2'></tfoot>

                <bdo id='Ch3B2'></bdo><ul id='Ch3B2'></ul>

                  <tbody id='Ch3B2'></tbody>
              • <legend id='Ch3B2'><style id='Ch3B2'><dir id='Ch3B2'><q id='Ch3B2'></q></dir></style></legend>
                1. JavaScript设计模式之单例模式

                  什么是单例模式

                  单例模式是一种常用的软件设计模式,用于保证系统中一个类只有一个实例,避免多个实例造成的资源浪费,同时也能够方便对该实例的控制和管理。

                  在JavaScript中,单例模式通常是通过对象字面量或者构造函数来实现的。

                  示例1:对象字面量实现单例模式

                  var Singleton = {
                    obj: null,
                    getInstance: function () {
                      if (!this.obj) {
                        this.obj = {name: "singleton object"};
                      }
                      return this.obj;
                    }
                  };
                  
                  var obj1 = Singleton.getInstance();
                  var obj2 = Singleton.getInstance();
                  
                  console.log(obj1 === obj2); // true
                  

                  上面的示例中,我们创建了一个Singleton对象,该对象包含一个obj属性,表示单例对象实例,以及getInstance方法,用于获取单例对象实例。在getInstance方法内,我们对obj属性进行了判断,如果该属性为null,则创建一个包含name属性的对象并赋值给obj,否则直接返回obj。这样,我们便可以通过Singleton.getInstance()方法来获取单例对象实例了。

                  最后,我们创建了两个变量obj1obj2,并将它们分别赋值为Singleton.getInstance()的返回值。由于getInstance方法返回的是单例对象实例,因此,obj1obj2应该相等,通过比较它们的引用,我们可以证明它们确实相等。

                  示例2:构造函数实现单例模式

                  function Singleton() {
                    if (!Singleton.instance) {
                      Singleton.instance = this;
                      this.name = "singleton object";
                    }
                    return Singleton.instance;
                  }
                  
                  var obj1 = new Singleton();
                  var obj2 = new Singleton();
                  
                  console.log(obj1 === obj2); // true
                  

                  上面的示例中,我们创建了一个名为Singleton的构造函数,该函数内部包含一个instance变量,表示单例对象实例。在创建对象时,我们首先判断instance是否存在,如果不存在,则将当前对象赋值给instance。此外,我们还在当前对象中添加了一个名为name的属性,用于标识对象。

                  最后,我们创建了两个变量obj1obj2,并将它们分别赋值为new Singleton()的返回值。由于Singleton是一个构造函数,它的返回值始终是创建的对象实例,因此,obj1obj2应该相等,通过比较它们的引用,我们可以证明它们确实相等。

                  总结

                  单例模式是一种非常常用的设计模式,能够有效地避免因重复创建对象导致的资源浪费等问题,并且能够方便对单例对象实例的控制和管理。在JavaScript中,单例模式通常是通过对象字面量或者构造函数来实现的,我们可以根据实际需求来选择适合自己的实现方式。

                  上一篇:Python编程中运用闭包时所需要注意的一些地方 下一篇:JavaScript 设计模式之洋葱模型原理及实践应用

                  相关文章

                    <legend id='5X4CL'><style id='5X4CL'><dir id='5X4CL'><q id='5X4CL'></q></dir></style></legend>

                    • <bdo id='5X4CL'></bdo><ul id='5X4CL'></ul>

                  1. <tfoot id='5X4CL'></tfoot>

                    <i id='5X4CL'><tr id='5X4CL'><dt id='5X4CL'><q id='5X4CL'><span id='5X4CL'><b id='5X4CL'><form id='5X4CL'><ins id='5X4CL'></ins><ul id='5X4CL'></ul><sub id='5X4CL'></sub></form><legend id='5X4CL'></legend><bdo id='5X4CL'><pre id='5X4CL'><center id='5X4CL'></center></pre></bdo></b><th id='5X4CL'></th></span></q></dt></tr></i><div id='5X4CL'><tfoot id='5X4CL'></tfoot><dl id='5X4CL'><fieldset id='5X4CL'></fieldset></dl></div>

                      <small id='5X4CL'></small><noframes id='5X4CL'>