`
makeyouown
  • 浏览: 52511 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何减少javascript事件对内存性能的影响

 
阅读更多
我们知道浏览器使用的是os的内存,而且是受限制的,远小于os内存,
如果在页面里添加了过多的事件,那么由于事件处理函数过多,会造成内存占用过大,严重影响性能,同时过多的事件会降低页面的交互性。
那么如何有效减少事件处理函数的个数呢?

< ul id=”myLinks” >
< li id=”goSomewhere” > Go somewhere < /li >
< li id=”doSomething” > Do something < /li >
< li id=”sayHi” > Say hi < /li >
< /ul >

//优化前
var item1 = document.getElementById(“goSomewhere”);
var item2 = document.getElementById(“doSomething”);
var item3 = document.getElementById(“sayHi”);
EventUtil.addHandler(item1, “click”, function(event){
location.href = “http://www.wrox.com”;
});
EventUtil.addHandler(item2, “click”, function(event){
document.title = “I changed the document ’ s title”;
});
EventUtil.addHandler(item3, “click”, function(event){
alert(“hi”);
});


//优化后
var list = document.getElementById(“myLinks”);
EventUtil.addHandler(list, “click”, function(event){
event = EventUtil.getEvent(event);
var target = EventUtil.getTarget(event);
switch(target.id){
case “doSomething”:
document.title = “I changed the document ’ s title”;
break;
case “goSomewhere”:
location.href = “http://www.wrox.com”;
break;
case “sayHi”:
alert(“hi”);
break;
}
});


2.及时移除事件,释放内存
先看一个反例:
< div id=”myDiv” >
< input type=”button” value=”Click Me” id=”myBtn” >
< /div >
< script type=”text/javascript” >
var btn = document.getElementById(“myBtn”);
btn.onclick = function(){
//do something
document.getElementById(“myDiv”).innerHTML = “Processing...”; //Bad!!!
};
< /script >


正解:
< div id=”myDiv” >
< input type=”button” value=”Click Me” id=”myBtn” >
< /div >
< script type=”text/javascript” >
var btn = document.getElementById(“myBtn”);
btn.onclick = function(){
//do something
btn.onclick = null; //remove event handler
document.getElementById(“myDiv”).innerHTML = “Processing...”;
};
< /script >


分享到:
评论

相关推荐

    JavaScript 事件对内存和性能的影响

    总结来说,JavaScript事件对内存和性能有着重要的影响,事件委托是一种有效的优化手段。通过在父级元素上统一管理事件监听器,可以有效减少内存占用和提升事件处理性能。Web开发者应该根据实际的项目需求和事件处理...

    JavaScript语言精粹(高清电子版)和高性能JavaScript 双语版

    3. **DOM操作优化**:减少DOM操作的次数,利用批量更新和事件委托提升性能。 4. **内存管理**:理解JavaScript的垃圾回收机制,避免内存泄漏,以及如何有效地释放不再使用的资源。 5. **函数优化**:函数调用开销...

    高性能JavaScript 2015

    5. **内存管理**:JavaScript的自动垃圾回收机制可能导致内存泄漏,从而影响性能。作者会讲述如何识别和解决这个问题,包括理解引用计数和标记清除算法。 6. **异步编程**:随着Ajax和Web Worker的普及,异步编程变...

    High Performance JavaScript(高性能Javascript编程) 【中英文对版】

    1. **内存管理**:书中会详细讲解JavaScript内存分配和垃圾回收机制,包括闭包、作用域链等概念,以及如何避免内存泄漏,以减少不必要的内存占用,提高程序性能。 2. **DOM操作优化**:JavaScript与DOM交互是Web...

    关于编写性能高效的javascript事件的技术

    在前端开发中,编写高性能的JavaScript事件处理代码至关重要。高效的事件处理不仅能够提升用户体验,还能减少不必要的计算和DOM操作,从而加快页面的响应速度。随着Web应用的日益复杂,对JavaScript事件系统的优化...

    《高性能JavaScript编程》.Nicholas.C.Zakas著.英文版

    4. **性能优化**:Zakas强调了DOM操作的性能影响,提出了一些减少DOM操作的策略。他还讨论了函数调用开销、对象创建和垃圾回收,提供了解决这些问题的最佳实践。 5. **代码组织与模块化**:书中介绍了如何通过模块...

    《高性能JavaScript》(尼古拉斯·泽卡斯).pdf

    例如,书中会讲解如何正确使用变量避免内存泄漏,以及理解引用类型的深拷贝和浅拷贝的区别,这些都对性能有直接影响。 其次,书中讨论了JavaScript的运行机制,如事件循环和异步编程。JavaScript是非阻塞的单线程...

    高性能JavaScript

    垃圾回收机制是JavaScript内存管理的关键,不合理的内存分配和未释放的引用可能导致内存泄漏。书中会讲解如何编写低内存消耗的代码,以及如何使用Chrome DevTools等工具进行性能分析和内存检测。 另外,DOM操作是...

    高性能JavaScript + 高清+目录 PDF

    然后,它深入讲解了JavaScript的内存管理机制,如垃圾回收和内存泄漏,这对于优化性能至关重要。 书中详细讨论了函数和对象的优化策略,包括函数表达式、立即执行函数、对象属性访问和优化、以及如何利用原型链来...

    Javascript 性能优化的一点技巧

    随着Web应用的日益复杂,JavaScript作为前端开发的核心语言之一,其运行效率直接影响着用户体验与整体性能。因此,掌握一定的JavaScript性能优化技巧对于提升应用程序性能至关重要。本文将深入探讨一些JavaScript...

    理解Javascript内存分配原理

    ### 理解JavaScript内存分配原理 #### 一、引言 在JavaScript编程中,内存管理是一个非常重要的概念。理解JavaScript如何处理内存分配对于优化代码性能、避免内存泄漏等问题至关重要。本文将详细介绍JavaScript中的...

    JavaScript性能监视器

    总之,JavaScript性能监视器是开发者工具箱中不可或缺的一部分,它提供了对应用性能的实时洞察,使得优化过程更加有目标性和效率。"mrdoob-stats.js"作为其中的一个优秀实现,为开发者提供了便捷的方式来监控和提升...

    javascript 数组内存释放

    然而,随着程序运行,可能会产生大量的数组对象,如果不正确地管理它们,可能导致内存泄漏,影响程序性能。本篇文章将深入探讨JavaScript数组的内存释放机制,以及如何有效地管理数组内存。 首先,理解JavaScript的...

    《高性能 JavaScript》

    ### 《高性能 JavaScript》知识点概览 #### 一、加载与执行(Loading and Execution) **核心概念:** 在浏览器中的JavaScript性能无疑是开发者面临的关键可用性问题。由于JavaScript的阻塞性质,在执行...

    JavaScript_内存泄露

    JavaScript的内存管理是其语言特性中的重要一环,理解并掌握这一机制对于编写高效、无内存泄露的代码至关重要。...通过合理的编程实践和对内存管理的关注,我们可以显著提高JavaScript应用程序的性能和稳定性。

    javascript内存泄露问题的解析

    JavaScript内存泄露问题是一种常见的bug,它会导致系统崩溃和性能下降。内存泄露是指系统不能正确地管理内存分配的情况,这可能会导致程序调用失败、执行减慢等问题。 在JavaScript中,内存泄露通常是由于循环引用...

    JavaScript性能优化的小知识总结共23页.pdf

    4. **事件委托(Event Delegation)**:通过在父元素上绑定事件,利用事件冒泡机制处理子元素的事件,减少内存占用和性能消耗。 5. **防抖(Debounce)与节流(Throttle)**:防抖用于限制函数在一定时间内执行的...

    [高性能JavaScript编程].(High.Performance.JavaScript).Nicholas.C.Zakas.中英对照版.pdf

    3. **DOM操作**:DOM(文档对象模型)是JavaScript与HTML交互的关键,书中探讨了高效的DOM选择、遍历和修改策略,减少DOM操作对页面渲染的影响。 4. **事件处理**:解析事件冒泡、事件委托等概念,介绍如何优化事件...

    JAVASCRIPT实现的CPU内存监控

    在JavaScript中实现CPU和内存监控是一项关键的技能,特别是在开发高性能和复杂Web应用程序时。JavaScript是一种客户端脚本语言,主要用于浏览器环境,它提供了多种方法来监视和管理应用程序的资源使用情况。 1. **...

Global site tag (gtag.js) - Google Analytics