


Detailed introduction to the impact of JavaScript events on memory and performance
Although event handlers can add strong interactive capabilities to modern Web pages, it is absolutely foolish to add a large number of event handlers indiscriminately.
Let’s analyze it: Event handlers are essentially a function and an object, stored in memory. Setting a large number of event handlers will increase the number of objects in the memory. Web The performance of the program will become worse and worse, and the user experience will be very bad.
In order to make better use of event handlers, Event delegation appeared to improve performance.
Event delegation
Event delegation: Bind the processing functions of the same event on several child nodes to its parent node, on the parent node Events bubbling up from child nodes are uniformly processed. This technology is called event delegation.
To add: event delegation is not limited to parent nodes and child nodes. You can also play like this. For example, there are many buttons in different positions in the page document, all of which are bound to click events. Using event delegation, we can bind these events to the body element and then process them (although generally Rarely used).
The following is an example to gradually illustrate the advantages of event delegation:
<ul id="parent-list"> <li id="list-1">List 1</li> <li id="list-2">List 2</li> <li id="list-3">List 3</li> <li id="list-4">List 4</li> <li id="list-5">List 5</li> </ul>
Assuming the above code, we now have a requirement: no matter which sublist of the above list (ul) is clicked ( li), a box will pop up to show which sublist we clicked.
The demand is not difficult, right? With the requirements in mind, it’s time to write js code. Now there are two methods in front of you: 1. Bind the click event to each li sub-element, and then set the handler function; 2. Use event delegation to bind the click event to the ul parent element, and then set the processing function
// 方法一 var list1 = document.getElementById("list-1"); list1.addEventListener("click",function(){ alert(this.firstChild.nodeValue); },false); var list2 = document.getElementById("list-2"); list2.addEventListener("click", function() { alert(this.firstChild.nodeValue); }, false); var list3 = document.getElementById("list-3"); list3.addEventListener("click", function() { alert(this.firstChild.nodeValue); }, false); var list4 = document.getElementById("list-4"); list4.addEventListener("click", function() { alert(this.firstChild.nodeValue); }, false); var list5 = document.getElementById("list-5"); list5.addEventListener("click", function() { alert(this.firstChild.nodeValue); }, false);
// 方法二 var parentList = document.getElementById("parent-list"); parentList.addEventListener("click",function(){ var target = event.target; if(target.nodeName.toLowerCase() === "li"){ alert(target.firstChild.nodeValue); } },false);
Looking at the above code, I will write down a few advantages of the second method: 1. Reduced access The number of times in the DOM improves performance; 2. Unified binding of event handlers of child elements to their parent elements reduces memory usage; 3. Event handlers can be better managed, such as removing responses to a certain event Handler reference
Note:If the requirements for each sub-element are different, we can also rewrite the above method 2 like this:
// 方法二 var parentList = document.getElementById("parent-list"); parentList.addEventListener("click",function(){ var target = event.target; if(target.nodeName.toLowerCase() === "li"){ switch(target.id){ case "list-1": alert("学的越多,越觉得自己无知!"); break; case "list-2": alert("爱是一种艺术!"); break; case "list-3": target.innerHTML = "呵呵,我改了啊!"; break; case "list-4": target.style.background = "#aaa"; break; case "list-5": target.style.color = "red"; target.style.fontSize = "2em"; break; default: break; } } },false);
Because Event delegation relies on the event bubbling mechanism, so not all events can be delegated.
The events most suitable for event delegation include: click, mousedown, mouseup, keydown, keyup and keypress.
Event delegation is just a very good idea of event binding, so you should not stick to the above examples, you should learn and use them! ^_^
Remove event handlers
We said earlier that event handlers exist in memory, Whenever an event handler is assigned to an element, the running A connection is established between the browser code and the JavaScript code that supports page interaction. The more such connections there are, the slower the page execution will be. The event delegation mentioned earlier is used to limit the number of connections established .
Also, those event handlers in memory that are no longer used after use will also affect the memory and performance of the Web application if they are not released.
<button id="button">提交</button> var button = document.getElementById("button"); button.onclick = function(){ // 提交某个表单的操作代码 button.onclick = null; // 移除事件处理程序 event.target.firstChild.nodeValue = "提交中。。。"; };
The general principle is: Remove those event handlers that are no longer used and release memory!
The above is a detailed introduction to the impact of JavaScript events on memory and performance. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

C and JavaScript achieve interoperability through WebAssembly. 1) C code is compiled into WebAssembly module and introduced into JavaScript environment to enhance computing power. 2) In game development, C handles physics engines and graphics rendering, and JavaScript is responsible for game logic and user interface.

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

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 Mac version
God-level code editing software (SublimeText3)

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6
Visual web development tools