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 相关文章推荐
我见过最全的个人js加解密功能页面
Dec 12 Javascript
用jQuery技术实现Tab页界面之二
Sep 21 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
jquery解析xml字符串简单示例
Apr 11 Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 Javascript
详细AngularJs4的图片剪裁组件的实例
Jul 12 Javascript
webpack4 升级迁移的实现
Sep 12 Javascript
浅谈JS for循环中使用break和continue的区别
Jul 21 Javascript
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之第一天
2006/10/09 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
js自定义事件代码说明
2011/01/31 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
举例讲解Python常用模块
2019/03/08 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
《神奇的克隆》教学反思
2014/04/10 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014年护士长工作总结
2014/11/11 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python