`
makeyouown
  • 浏览: 50626 次
  • 性别: 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 事件对内存和性能的影响。具有很好的参考价值,下面跟着小编一起来看下吧

    性能调优之Javascript内存泄漏

    但是,IE的早些版本(IE7和之前)中内存泄漏是很容易出现的,因为内存管理器不能正确理解Javascript生命周期而且在周期被打破(可以通过赋值为null实现)前不会回收内存。在大型Web应用程序中内存泄漏是一种常见的意外...

    动态内存分配导致影响Javascript性能的问题

    内存分配对性能的影响是很大的,分配内存本身需要时间,垃圾回收器回收内存也需要时间,所以应该尽量避免在堆里分配内存。不过直到最近优化HoLa cantk时,我才深刻的体会到内存分配对性能的影响,其中有一个关于...

    jsmeter是一种测量JavaScript代码的执行时间CPURAM和堆的性能工具

    js-meter是一种测量JavaScript代码的执行时间,CPU,RAM和堆的性能工具

    Node.js-Kefir.js-JavaScript的响应式编程库专注于高性能和低内存使用

    Kefir.js - JavaScript的响应式编程库专注于高性能和低内存使用

    JavaScript的垃圾回收机制与内存管理

    如果我们想要优化性能,首先我们必须得了解JavaScript中的垃圾回收机制,这样可以将很多没有被使用到的变量从内存中清除掉,腾出更多的内存空间,给别的变量分配内存空间。 JavaScript中的垃圾回收机制 引言 本篇...

    JavaScript事件委托技术实例分析

    本文实例分析了JavaScript事件委托技术。分享给大家供大家参考。具体分析如下: 如果一个整体页面里有大量的按钮.我们就要为每一个按钮绑定事件处理程序.这样就会影响性能了. 首先每个函数都是对象,对象就会占用很多...

    JavaScript避免内存泄露及内存管理技巧

    本文实例讲述了JavaScript避免内存泄露及内存管理技巧,非常实用。分享给大家供大家参考之用。具体方法如下: 本文内容源自谷歌WebPerf(伦敦WebPerf集团),2014年8月26日。 一般来说,高效的JavaScript Web应用...

    JavaScript实现的内存数据库LokiJS介绍和入门实例

    主要介绍了JavaScript实现的内存数据库LokiJS介绍和入门实例,LokiJS是一个内存数据库,将性能考虑放在第一位,使用JavaScript编写,需要的朋友可以参考下

    Javascript内存泄漏

    但是,IE的早些版本(IE7和之前)中内存泄漏是很容易出现的,因为内存管理器不能正确理解Javascript生命周期而且在周期被打破(可以通过赋值为null实现)前不会回收内存。在大型Web应用程序中内存泄漏是一种常见的意外...

    JavaScript 数组的进化与性能分析

    本文讲得更多的是内存、优化、语法差异、性能、近来的演进。 在使用 JavaScript 前,我对 C、C++、C# 这些已经颇为熟悉。与许多 C/C++ 开发者一样,JavaScript 给我的第一印象并不好。 Array 是主要原因之一。...

    stats.js:JavaScript性能监视器

    JavaScript性能监视器 此类提供了一个简单的信息框,可帮助您监视代码性能。 FPS在最后一秒内渲染的帧。 数字越高越好。 MS毫秒需要渲染的帧。 数值越低越好。 MB MB已分配的内存。 (使用--enable-precise-...

    JavaScript中内存泄漏的介绍与教程(推荐)

    本文主要给大家详细介绍了关于JavaScript中内存泄漏的相关内容,文中介绍的非常详细,对大家具有一定的参考学习价值,下面来一起看看详细的介绍: 一、什么是内存泄漏? 程序的运行需要内存。只要程序提出要求,...

    编写高性能JavaScript

    如果你是一个开发者,并且关心内存使用情况与页面性能,你应该了解用户浏览器中的JavaScript引擎是如何运作的。无论是V8,SpiderMonkey的(Firefox)的Carakan(Opera),Chakra(IE)或其他引擎,这样做可以帮助你...

Global site tag (gtag.js) - Google Analytics