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 相关文章推荐
JavaScript 在各个浏览器中执行的耐性
Apr 06 Javascript
帮助避免错误的Javascript陷阱清单
May 31 Javascript
jquery统计输入文字的个数并对其进行判断
Jan 07 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
JS实现的简单下拉框联动功能示例
May 11 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
Dec 24 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
OpenLayers3实现测量功能
Sep 25 Javascript
Vue2项目中对百度地图的封装使用详解
Jun 16 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 is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
python实现的重启关机程序实例
2014/08/21 Python
Python sys.argv用法实例
2015/05/28 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python如何求圆的面积
2020/07/01 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
先进个人获奖感言
2014/01/24 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
银行招聘自荐信
2015/03/06 职场文书
行为习惯主题班会
2015/08/14 职场文书
golang特有程序结构入门教程
2021/06/02 Python
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
防止web项目中的SQL注入
2021/12/06 MySQL