var str="hello";
str+="world";
实际上,这段代码在幕后执行的步骤如下:
(1) 创建存储"hello"的字符串。
(2) 创建存储"world"的字符串。
(3) 创建存储连接结果的字符串。
(4) 把str的当前内容复制到结果中。
(5) 把"world"复制到结果中。
(6) 更新str,使它指向结果。
每次完成字符串连接都会执行步骤2到6,使得这种操作非常消耗资源。如果重复这一过程几百次,甚至几千次,就会造成性能问题。解决方法是用Array对象存储字符串,然后用join()方法(参数是空字符串)创建最后的字符串。想像用下面的代码代替前面的代码:
复制代码 代码如下:
var str=new Array();
str[0]="hello";
str[1]="world";
str.join("");
这样,无论在数组中引入多少字符串都不成问题,因为只在调用join()方法时才会发生连接操作。此时,执行的步骤如下:
(1) 创建存储结果的字符串。
(2) 把每个字符串复制到结果中的合适位置。
复制代码 代码如下:
function StringBuilder(){
this._string=new Array();
}
StringBuilder.prototype.Append=function(str){
this._string.push(str);
}
StringBuilder.prototype.toString=function(){
return this._string.join("");
}
相关提升效率的文章:
html数组字符串拼接的最快方法
javascript之大字符串的连接的StringBuffer 类
更多可以参考以前的文章。
相关推荐:
CSS 伪类实现的鼠标滑动图片链接
js与ASP.NET 中文乱码问题
PHP 处理图片的类实现代码
JavaScript 抽奖效果实现代码 数字跳动版
学习ExtJS form布局
mysql 备份与迁移 数据同步方法
JQuery 网站换肤功能实现代码
JS OOP包机制,类创建的方法定义
Linux 配置WWW服务器全攻略
5款Javascript颜色选择器
Javascript 数组添加 shuffle 方法的实现代码
win2003 iis 不支持请求(iis iso)的解决方法分析
AJAX 客户端响应速度提高分析
javascript 图片放大效果函数
PPK 谈 JavaScript 的 this 关键字 [翻译]
Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Mysql5 字符集编码问题解决
浅析ASP.NET生成随机密码函数
JavaScript 全角转半角部分
asp.net url重写浅谈
asp.net Forms身份验证和基于角色的权限访问
MySQL 错误处理例子[译]
javascript 弹出层居中效果的制作
sql 服务器知识
DB2 常用命令速查(备忘)
Flex 3 布局容器学习笔记 整理
Oracle 子程序参数模式,IN,OUT,NOCOPY
jQuery 事件队列调整方法
zend studio 快捷键收集
纯JS图片批量预加载技术代码
javascript 遮照层效果
图片友情链接滚动 横向,带控制按钮
JavaScript 组件之旅(二)编码实现和算法
asp.net checkbox 动态绑定id GridView删除提示
JSP errorPage设置方法
js removeChild 障眼法 可能出现的错误
asp.net下获取浏览器类型的实现代码
vbs 函数 获取数组字符串的最后一个LastOne 挺方便的
Mootools 1.2 手风琴(Accordion)教程
js 覆盖和重载 函数
三位千万富翁告诉你 钱是怎么赚来的
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
ASP程序与SQL存储过程结合使用详解
让你的网站可编辑的实现js代码
SQL 随机查询 包括(sqlserver,mysql,access等)
Mootools 1.2教程 同时进行多个形变动画
sqlserver 常用存储过程集锦
ie与firefox下的event使用说明与详细区别
asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名