search
HomeWeb Front-endJS Tutorialjavascript singleton/singleton_javascript skills

Three characteristics of the singleton pattern:
1. The class has only one instance
2. The class creates the instance by itself (creates its own instance object inside the class)
3. Exposes this to the entire system The instance interface
looks like this in Java

Copy code The code is as follows:

class Singleton {
//Private, static instance of the class itself
private static Singleton instance = new Singleton();
//Private constructor (constructor, constructor, constructor)
private Singleton(){}
//Public, static factory method
public static Singleton getInstance() {
return instance;
}
}

Use When
Copy code The code is as follows:

Singleton obj = Singleton.getInstance();

This singleton class instance will be instantiated when itself is loaded, even if the loader is static. Therefore, for resource-intensive and configuration-intensive monoliths, a more reasonable approach is to defer instantiation (new) until the time it is used. That is, lazy loading (Lazy loading), which is often used for monoliths that must load large amounts of data. Modify
Copy code The code is as follows:

class LazySingleton {
//Initially: null, not instantiated yet
private static LazySingleton instance = null;
//Private constructor (constructor, constructor, constructor method)
private LazySingleton(){}
//Public , a static factory method, create the singleton when needed.
public static LazySingleton getInstance() {
if( instance == null ) {
instance = new LazySingleton();
}
return instance;
}
}

The usage is the same as above.
The singleton pattern is one of the most basic and useful patterns in Javascript. It provides a means of organizing code into a logical unit that is accessed through a single variable.
Singles have many uses in Javascript and can be used to divide namespaces to reduce the proliferation of global variables. It can also be used in branching techniques to handle differences between browsers.
There are many ways to implement the singleton pattern in Javascript, each of which has its own advantages or disadvantages.
1. Object literal implementation is the most basic and simplest singleton
Copy code The code is as follows:

var Singleton = {
attr1 : 1,
attr2 : 'hello',
method1 : function(){alert(this.attr2);},
method2 : function( arg){}
}

In this method, all members of the object are accessed through Singleton plus dot. All members are public, nothing private. When the variable Singleton is executed, it will load (instantiate) itself, that is, it is not lazy loaded.
In addition, there are some risks in method1 using this to access other members of the singleton, because the context of method1 does not always point to the Singleton object.
For example, when method1 is used as an event listener, this may point to a dom element, and undefined may be displayed.
2. Closure implements the singleton of private members
Copy the code The code is as follows:

var Singleton = function(){
var attr = 1, fn = function(){};
return {
method : function(){ fn(); },
getAttr : function (){ return attr; }
};
}();

In this way, var defines the private member attribute attr, method fn, and then returns a public interface method and getAttr. When the implementation is modified in the future, the interface methods method and getAttr remain unchanged, and only the specific implementation of private attr and fn needs to be modified. Use the following
to copy the code The code is as follows:

Singleton.method();
Singleton .getAttr();

3. Closure implements lazy instantiation of private members as a singleton
Copy code The code is as follows:

var LazySingleton = function(){
var attr = 1, fn = function(){};
var obj = {
method: function(){ fn(); },
getAttr : function(){ return attr; }
};
function init(){
return obj;
}
return {getInstace: init};
}();

Applicable occasions have been mentioned above: for those single entities that must load a large amount of data, they are not instantiated until they are needed to use it. The usage is like this
Copy the code The code is as follows:

LazySingleton.getInstance().method ();
LazySingleton.getInstance().getAttr();
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
JavaScript: Exploring the Versatility of a Web LanguageJavaScript: Exploring the Versatility of a Web LanguageApr 11, 2025 am 12:01 AM

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

The Evolution of JavaScript: Current Trends and Future ProspectsThe Evolution of JavaScript: Current Trends and Future ProspectsApr 10, 2025 am 09:33 AM

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.

Demystifying JavaScript: What It Does and Why It MattersDemystifying JavaScript: What It Does and Why It MattersApr 09, 2025 am 12:07 AM

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

Is Python or JavaScript better?Is Python or JavaScript better?Apr 06, 2025 am 12:14 AM

Python is more suitable for data science and machine learning, while JavaScript is more suitable for front-end and full-stack development. 1. Python is known for its concise syntax and rich library ecosystem, and is suitable for data analysis and web development. 2. JavaScript is the core of front-end development. Node.js supports server-side programming and is suitable for full-stack development.

How do I install JavaScript?How do I install JavaScript?Apr 05, 2025 am 12:16 AM

JavaScript does not require installation because it is already built into modern browsers. You just need a text editor and a browser to get started. 1) In the browser environment, run it by embedding the HTML file through tags. 2) In the Node.js environment, after downloading and installing Node.js, run the JavaScript file through the command line.

How to send notifications before a task starts in Quartz?How to send notifications before a task starts in Quartz?Apr 04, 2025 pm 09:24 PM

How to send task notifications in Quartz In advance When using the Quartz timer to schedule a task, the execution time of the task is set by the cron expression. Now...

In JavaScript, how to get parameters of a function on a prototype chain in a constructor?In JavaScript, how to get parameters of a function on a prototype chain in a constructor?Apr 04, 2025 pm 09:21 PM

How to obtain the parameters of functions on prototype chains in JavaScript In JavaScript programming, understanding and manipulating function parameters on prototype chains is a common and important task...

What is the reason for the failure of Vue.js dynamic style displacement in the WeChat mini program webview?What is the reason for the failure of Vue.js dynamic style displacement in the WeChat mini program webview?Apr 04, 2025 pm 09:18 PM

Analysis of the reason why the dynamic style displacement failure of using Vue.js in the WeChat applet web-view is using Vue.js...

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software