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 相关文章推荐
List the Stored Procedures in a SQL Server database
Jun 20 Javascript
jQuery中$(function() {});问题详解
Aug 10 Javascript
js判断数组key是否存在(不用循环)的简单实例
Aug 03 Javascript
微信小程序 出现47001 data format error原因解决办法
Mar 10 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
BackBone及其实例探究_动力节点Java学院整理
Jul 14 Javascript
原生js实现省市区三级联动代码分享
Feb 12 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
Jan 08 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
详解Vue、element-ui、axios实现省市区三级联动
May 07 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
Openlayers实现扩散的动态点(水纹效果)
Aug 17 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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
php缓冲输出实例分析
2015/01/05 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
django之session与分页(实例讲解)
2017/11/13 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
优纳科技软件测试面试题
2012/05/15 面试题
后勤部长岗位职责
2013/12/14 职场文书
售房协议书
2014/08/19 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
优秀校长事迹材料
2014/12/24 职场文书
先进个人申报材料
2014/12/30 职场文书
高三物理教学反思
2016/02/20 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
canvas绘制折线路径动画实现
2021/05/12 Javascript
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python