◆字符串的使用
在IE6和IE7中因字符串级联导致的主要问题是垃圾回收性能,虽然这些问题在IE8中已经得到解决,但如果你的用户大部分仍然在使用IE或IE7,你就得格外注意这个问题了。看一个例子先:
var veryLongMessage = "This is a long string that due to our strict line length limit of"
+ maxCharsPerLine + " characters per line must be wrapped. "
+ percentWhoDislike + "% of engineers dislike this rule. The line length limit is for "
+ " style purposes, but we don't want it to have a performance impact."
+ " So the question is how should we do the wrapping?";
◆使用连接代替级联:
var veryLongMessage = ["This is a long string that due to our strict line length limit of",
maxCharsPerLine,
" characters per line must be wrapped. ",
percentWhoDislike,
"% of engineers dislike this rule. The line length limit is for ",
" style purposes, but we don't want it to have a performance impact.",
" So the question is how should we do the wrapping?"].join();
与此类似,在条件语句中使用级别也是很低效的,错误的做法:
var fibonacciStr = "First 20 Fibonacci Numbers ";
for (var i = 0; i < 20; i++) {
fibonacciStr += i + " = " + fibonacci(i) + " ";
}
正确的方法:
var strBuilder = ["First 20 fibonacci numbers:"];
for (var i = 0; i < 20; i++) {
strBuilder.push(i, " = ", fibonacci(i)," ");
}
var fibonacciStr = strBuilder.join("");
◆定义类函数
下面的函数是低效的,因为每次构造baz.Bar的实例时,会创建一个新的函数和闭包:
baz.Bar = function () {
// constructor body
this.foo = function () {
// method body
};
};
正确的方法是:
baz.Bar = function () {
// constructor body
this.foo = function () {
// method body
};
};
baz.Bar = function () {
// constructor body
};
baz.Bar.prototype.foo = function () {
// method body
};
使用这个方法时,无论baz.Bar构造了多少个实例,都只会为foo创建一个函数,而且不会创建闭包。
◆初始化实例变量
使用实例变量值类型初始值初始化实例变量声明,如数值、布尔值、空值、未定义或字符串,这样可以避免每次调用构造器时运行不必要的初始化代码。还是来看一个例子:
foo.Bar = function () {
this.prop1_ = 4;
this.prop2_ = true;
this.prop3_ = [];
this.prop4_ = "blah";
};
可以使用:
foo.Bar = function () {
this.prop3_ = [];
};
foo.Bar.prototype.prop1_ = 4;
foo.Bar.prototype.prop2_ = true;
foo.Bar.prototype.prop4_ = "blah";
进行代替。
◆避免使用with
避免在代码中使用with,它会影响到性能,因为它修改了范围链,因此需要花费更多时间到其它范围去查找。
◆避免浏览器内存泄漏
对于Web应用程序而言,内存泄漏是很常见的事情,可能因此导致巨大的性能问题。因为浏览器的内存使用在增长,你的Web应用程序和其它程序就会变慢,最常见的内存泄漏是在JavaScript引擎和浏览器C++对象实现的DOM之间形成了循环引用,如在JavaScript引擎和IE浏览器的COM基础结构之间,以及JavaScript引擎和Firefox XPCOM基础结构之间。
分享到:
相关推荐
JavaScript代码优化一例.pdf
主要介绍了JavaScript异步代码优化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本篇文章给大家分享了关于javascript代码优化的8点总结,希望我们整理的内容能够帮助到大家。
NULL 博文链接:https://t240178168.iteye.com/blog/1702269
circles优化二维函数的简单应用程序 shape-fitting优化正方形中任意形状的定位 pool优化台球比赛的破发球 async异步目标函数的示例 参数改变参数时的优化器性能 meta-optimizer pso.js 用于优化另一个 pso 实例的...
下面我们通过这个例子介绍1个更简单的方法: 我们用将统计代码保存到1个文件:文件路径:/config/counter.conf 统计代码如下: 代码如下: [removed] var _gaq = _gaq || []; _gaq.push([‘_setAccount’, ‘UA-18744406-...
javascript 中粒子 群优化 的可视化_javascript _代码_下载
此外,很多程序辛辛苦苦的写出来的javascript代码却被别人随意的剽窃,实为憾事。本软件还可以通过对javascript的变量名称和过程名称进行编码,从而起到混淆ja代码的作用,保护您的劳动成功。 JS代码压缩,基本原理...
【JS代码优化二】ES6 数组篇
JavaScript代码格式化,对凌乱的JavaScript代码进行格式化,保持代码的整洁,挺好用的一个工具,虽然对于一些正则表达式的格式化效果有点不太好,但整体还是比较清晰的,毕竟我们的程序也只有那某个脚本文件是正则吧...
应用jQuery技术优化传统JavaScript代码制作网页块元素悬停功能.pdf
Javascript 代码压缩 网址 : http://julying.com/lab/compress-js-css/ 类型: 原创脚本 作者: 王子墨 邮箱 : i@julying.com 发布 : 2012-06-10 22:28 更新 : 2012-07-22 12:50 版权所有 2012 | julying....
本书介绍了70多种有关优化网页HTML代码的原理与技巧,内容涉及HTML、图像、多媒体、表格、报头、网址、JavaScript、CSS、网站等十个方面的优化问题。相信读者能够利用这些技巧,减少网页的字节数,提高网页的显示...
客户端脚本能让你的应用更加地动态和活跃, 但是浏览器对代码的解析可能造成效率问题, 而这种性能差异在客户端之间也不尽相同。 这里我们讨论和给出一些优化你的 JavaScript 代码的提示和最佳实践。
用斐波那契记忆优化法优化递归,提高代码运行效率,这个是JavaScript版
cxVzxvcxvxzcvcxzvcasdA wefcccccccccccccccccccccccccewcccccccccccccccc
前端 每日代码 中级进阶
第三篇讲解的是JavaScript的高级技术,主要讲解了JavaScript与XML技术、正则表达式、Ajax基础、Ajax高级应用、JavaScript与插件和JavaScript的调试与优化等。最后一篇综合案例篇用一个完整的例子讲解了如何使用...
优化CSS,Javascript代码(Minify+Uglify)以减少带宽占用,提高网页打开速度 教程