JavaScript 学习笔记二 字符串拼接


Posted in Javascript onMarch 28, 2010

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 类

更多可以参考三水点靠木以前的文章。

Javascript 相关文章推荐
JQuery Easyui Tree的oncheck事件实现代码
May 28 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
Sep 26 Javascript
JQuery中dataGrid设置行的高度示例代码
Jan 03 Javascript
基于JavaScript实现回到页面顶部动画代码
May 24 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
Aug 26 Javascript
vue.js表格分页示例
Oct 18 Javascript
vue绑定设置属性的多种方式(5)
Aug 16 Javascript
vue实现点击展开点击收起效果
Apr 27 Javascript
vue中input的v-model清空操作
Sep 06 Javascript
javascript+css实现进度条效果
Mar 25 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
jQuery 美元符冲突的解决方法
Mar 28 #Javascript
分享十五个最佳jQuery 幻灯插件和教程
Mar 27 #Javascript
Jquery 1.42 checkbox 全选和反选代码
Mar 27 #Javascript
网络图片延迟加载实现代码 超越jquery控件
Mar 27 #Javascript
JQuery的一些小应用收集
Mar 27 #Javascript
Visual Studio中的jQuery智能提示设置方法
Mar 27 #Javascript
Jquery 滑入滑出效果实现代码
Mar 27 #Javascript
You might like
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
Sanic框架请求与响应实例分析
2018/07/16 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
python给list排序的简单方法
2020/12/10 Python
用python批量下载apk
2020/12/29 Python
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
家长寄语大全
2014/04/02 职场文书
保险内勤岗位职责
2014/04/05 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
化工工艺设计求职信
2014/06/25 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
入党自荐书范文
2015/03/05 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis