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

提高JavaScript性能的三个小知识

阅读更多

---------------

木鱼说

---------------

我只把有关例子的句子或改编了下:)

 

---------------

正文

---------------

Tip 1: Cache your objects!

for (i=0;i<document.images.length;i++)
document.images[i].src="blank.gif"

 对象“document.images”被多次访问。由于浏览器必须在每次循环寻找“document.images”两次,实现的代码性能不高。如果页面上有10个图片,Images对象将被调用20次。过度访问JavaScript对象会影响浏览器性能,更不要提计算机内存了。

 

"cache your object"意味着,把需要重复访问的对象存储在一个用户定义的变量,供以后使用。性能提升会非常明显。下面是修改后的版本:

 

var theimages=document.images
for (i=0;i<theimages.length;i++)
theimages[i].src="blank.gif"

 

document.images[]引用的次数不仅仅减少一半,每次引用,浏览器就不必首先遍历document.images,而是径直访问容器数组。

 

在调用高度嵌套的DHTML对象时,记得使用这个技巧呀!比如document.all.myobject, 或  document.layers.firstlayer等。

 

有很多这样的例子,请看prototype.js中的用法:

for (var i = 0, length = properties.length; i < length; i++) {
  //code here
}

 

    for (var i = 0, length = arguments.length; i < length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) { }
    }

 

for (var i = 0, length = this.length; i < length; i++)
      iterator(this[i]);

 

    for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
    for (var i = 0, length = arguments.length; i < length; i++) {
      if (Object.isArray(arguments[i])) {
        for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
          array.push(arguments[i][j]);
      } else {
        array.push(arguments[i]);
      }
    }

 

Tip 2: Cache your scripts!

 

把js代码放到文件里。

 

<script type="text/javascript" src="imagescript.js"></script>

  

在yahoo的如何建设高性能网站博客里也提到了这一点,请参看http://developer.yahoo.com/performance/rules.html

 

Tip 3: Understand the cost of your objects

 

事实上,一些JavaScript对象很少宽容浏览器。请看下面的例子:

 

-object.innerText //IE only
-object.innerHTML

 

你知道第二个属性比第一个要求更多的系统资源调用次数吗?如果你刚好在IE里、刚好要改变某个<div>或<span>里的文本内容,innerText将是非常高效的选择。另一个例子就是CSS属性“display”和“visibility”;前者明显比后者开销大。

 

---------------

参考文章

---------------

http://www.javascriptkit.com/javatutors/efficientjs.shtml

 

该网站有很多实用、短小的文章,非常不错!

分享到:
评论

相关推荐

    《高性能 JavaScript》

    在浏览器中的JavaScript性能无疑是开发者面临的关键可用性问题。由于JavaScript的阻塞性质,在执行JavaScript代码时,其他任何操作都无法进行。实际上,大多数浏览器都使用单一进程来处理用户界面(UI)更新和...

    高性能JavaScript.pdf

    ### 高性能JavaScript知识点概述 #### 一、加载与执行(Loading and Execution) **核心概念:** - **JavaScript执行机制**:浏览器中的JavaScript执行过程及其对网页渲染的影响。 - **单进程模型**:大多数现代...

    javascript中文三个好文档

    总而言之,"javascript中文三个好文档"涵盖了JavaScript的基础到进阶的知识点,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。通过深入研读并实践这些文档中的内容,你将能够更好地驾驭JavaScript,提升...

    300个JavaScript的小例子

    通过这个"300个JavaScript的小例子",你可以逐步探索以上知识点,并通过实践加深理解。每个例子都是一个独立的练习,旨在帮助你将理论知识转化为实际技能。无论是初学者还是有经验的开发者,这个资源都能提供宝贵的...

    高性能JavaScript(High Performance JavaScript )

    - **作用域管理**:合理的管理变量的作用域对于提高JavaScript性能至关重要。 - **作用域链与标识符解析**:深入理解JavaScript中的作用域链和标识符解析机制可以帮助开发者编写更高效的代码。 - **减少全局变量的...

    JavaScript 三维报表 饼图

    在理解JavaScript三维饼图前,首先需要了解JavaScript的基础知识。JavaScript是一种脚本语言,广泛用于网页交互和动态内容的生成。它在浏览器环境中运行,可以操作DOM(文档对象模型)来改变HTML元素,以及通过AJAX...

    高性能javascript中英文对照版

    1. JavaScript性能优化的重要性:文件提到高性能JavaScript对于开发者而言是极其重要的,因为它关乎到浏览器端的用户体验。性能问题之所以重要,是因为JavaScript的执行具有阻塞性质,即在JavaScript代码执行期间,...

    JavaScript三级联动菜单.

    要实现JavaScript三级联动菜单,我们需要掌握以下几个关键知识点: 1. HTML基础结构:首先,我们需要创建HTML来定义菜单的基本结构,通常包括`&lt;ul&gt;`和`&lt;li&gt;`元素来构建层级关系。例如,一级菜单是顶级`&lt;ul&gt;`,二级...

    Effective JavaScript 编写高质量JavaScript代码的68个有效方法1

    《Effective JavaScript:编写高质量JavaScript代码的68个有效方法》是David Herman撰写的一本JavaScript编程指南,该书基于作者在Ecma的JavaScript标准化委员会的工作经验,深入探讨了JavaScript的内部工作机制、...

    JavaScript设计模式+JavaScript模式+JavaScript异步编程

    - 事件委托:利用事件冒泡机制,将事件监听器添加到父元素,提高性能。 - 异步控制流:利用回调、Promise和async/await处理异步操作。 3. **JavaScript异步编程**: 异步编程是JavaScript的重要特性,用于处理...

    JavaScript内核系列 pdf

    JavaScript内核系列是一份深入探讨JavaScript编程语言及其内核的宝贵资源,对于正在学习或从事JavaScript开发的学生和程序员来说,它提供了丰富的知识和技术指导。这份资料详细阐述了JavaScript的各个方面,包括语法...

    3000 个javascript 代码集合基本覆盖所有方面

    这个3000个JavaScript代码集合涵盖了JavaScript的各个方面,旨在提供一个全面的学习和参考资料库。 一、JavaScript基础 这个集合中可能包括了JavaScript的基础语法,如变量声明(var, let, const)、数据类型(字符...

    JavaScript提高性能知识点汇总

    针对JavaScript提高性能的知识点可以分为多个方面,下面将一一进行阐述。 一、js文件的加载位置 在HTML文件中,script标签通常可以放置在head区域或body区域。由于JavaScript的执行会阻塞浏览器的UI渲染,所以如果...

    js-高性能JavaScript-JavaScript语言精粹修订版

    以上资料提供了丰富的JavaScript编程知识,涵盖了从基础知识到高级技术的多个方面,对于希望深入学习JavaScript的开发者来说是非常宝贵的资源。通过这些书籍的学习,可以全面掌握JavaScript的各种特性和编程技巧,...

    Javascript完全自学宝典

    4. **你可能不知道的10个JavaScript小技巧** - **核心知识点**: - 不常用但实用的功能(如Array.from、Object.assign等)。 - 提高代码可读性的编码习惯。 - 编写简洁高效的函数式代码技巧。 #### 三、...

    JavaScript(ppk谈JavaScript+JavaScript语言精粹修订+Secrets of the JavaScript Ninja)

    ppk的书籍通常会涵盖JavaScript的基础知识,以及如何处理浏览器差异,这对于前端开发者来说是非常有价值的资源。 “JavaScript语言精粹(修订版)”可能是Douglas Crockford的著作,他是一位JavaScript的先驱者,对...

    JavaScript_特效 JavaScript 网页特效 网页编程必备

    优化JavaScript特效的性能至关重要。避免全局查找,使用局部变量;减少DOM操作,批量处理;合理使用事件委托;以及适时使用requestAnimationFrame等技巧,都能提高特效的流畅度和用户体验。 综上所述,JavaScript...

Global site tag (gtag.js) - Google Analytics