javascript编码规范(6)

2019-06-02 14:48

el.onclick = function () {??} return el; } init(); 可以替换为: function init() {

var el = document.getElementById('MyElement'); el.onclick = function () {??} try{ return el; } finally { el = null; } } init();

2) 构造新的context 例如:

function init() {

var el = document.getElementById('MyElement'); el.onclick = function () {??} } init(); 可以替换为:

function elClickHandler() {??} function init() {

var el = document.getElementById('MyElement'); el.onclick = elClickHandler; } init();

把function抽到新的context中,这样,function的context就不包含对el的引用,从而打断循环引用。

3.6.9.2 通过javascript创建的dom对象,必须append到页面中

IE下,脚本创建的dom对象,如果没有append到页面中,刷新页面,这部分内存是不

24

上海天缘迪柯信息技术有限公司

会回收的!

示例代码:

function create () {

var gc = document.getElementById('GC'); for (var i = 0; i < 5000 ; i++) {

var el = document.createElement('div'); el.innerHTML = \

//下面这句可以注释掉,看看浏览器在任务管理器中,点击按钮然后刷新后的内存变化 gc.appendChild(el); } }

3.6.9.3 释放dom元素占用的内存

将dom元素的innerHTML设置为空字符串,可以释放其子元素占用的内存。

在rich应用中,用户也许会在一个页面上停留很长时间,可以使用该方法释放积累得越来越多的dom元素使用的内存。

3.6.9.4 释放javascript对象

在rich应用中,随着实例化对象数量的增加,内存消耗会越来越大。所以应当及时释放对对象的引用,让GC能够回收这些内存控件。

对象:obj = null

对象属性:delete obj.myproperty

数组item:使用数组的splice方法释放数组中不用的item

3.6.9.5 避免string的隐式装箱

对string的方法调用,比如'xxx'.length,浏览器会进行一个隐式的装箱操作,将字符串先转换成一个String对象。推荐对声明有可能使用String实例方法的字符串时,采用如下写法:

var myString = new String('Hello World');

25

3.6.10 性能的其它注意事项

3.6.10.1 尽量使用原生方法 3.6.10.2 switch语句相对if较快

通过将case语句按照归可能到最不可能的顺序进行组织

3.6.10.3 位运算较快

当进行数字运算时,位运算操作要比任何布尔运算或者算数运算快 3.6.10.4

例如:

function eventHandler (e) { if(!e) e = window.event; }

可以替换为:

function eventHandler (e) { e = e || window.event; } 例如: if (myobj) { doSomething(myobj); }

可以替换为:

myobj && doSomething(myobj);

巧用||和&&布尔运算符

3.7 部署

? 用JSLint运行JavaScript验证器来确保没有语法错误或者是代码没有潜在的

26

上海天缘迪柯信息技术有限公司

? 部署之前推荐使用压缩工具将JS文件压缩 ? 文件编码统一用UTF-8

3.7.1 JavaScript引用:

JavaScript 程序应该尽量放在 .js 的文件中,需要调用的时候在 HTML 中以

javascript编码规范(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:遗传算法及其在生物数学模型参数优化中的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: