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替换文本域内的回车示例
Feb 18 Javascript
javascript实现在线客服效果
Jul 15 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
初步使用Node连接Mysql数据库
Mar 03 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
Mar 30 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
完美解决js传递参数中加号和&号自动改变的方法
Oct 11 Javascript
javascript实现无法关闭的弹框
Nov 27 Javascript
谈谈因Vue.js引发关于getter和setter的思考
Dec 02 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
jQuery 动画与停止动画效果实例详解
May 19 jQuery
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
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
Python最小二乘法矩阵
2019/01/02 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
大二学生职业生涯规划书
2014/02/05 职场文书
体育教学随笔感言
2014/02/24 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
软件售后服务承诺书
2014/05/21 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
校本研修个人总结
2015/02/28 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js