JavaScript 学习笔记(七)字符串的连接


Posted in Javascript onDecember 31, 2009

字符串的连接
一、 最常用+=
一直说这种方式的效率是最低的,为什么呢?可以看下这种方式的实质过程。
var str = "hello";
str += "world";
(1) 创建存储"hello"的字符串。
(2) 创建存储"world"的字符串。
(3) 创建存储连接结果的字符串。
(4) 把str的当前内容复制到结果中。
(5) 把"world"复制到结果中。
(6) 更新str,使它指向结果。
每次完成字符串连接都会执行步骤2到6,使得这种操作非常消耗资源。如果重复这一过程几百次,甚至几千次,就会造成性能问题。所有以后就要摒弃这种用法了,哈哈哈。^_^
二、 join()方法

//按钮调用 
function JoinFn() { 
var arr = new Array; 
arr[0] = "张三"; 
arr[1] = "李四"; 
alert(arr.join("")); 
}

执行的步骤如下:
(1) 创建存储结果的字符串。
(2) 把每个字符串复制到结果中的合适位置。
这中方法效率比第一种快。
三、 封装一个自定义的类
JavaScript中没有像C#中那样的StringBuilder类,但是我们可以自定义一个StringBuilder类,建类的方法就是上一篇提到的“混合的构造函数/原型方式”。
//自定义一个StringBuilder类,用来连接字符串 
function StringBuilder() { 
this._strings = new Array(); 
} 
StringBuilder.prototype.append = function(str) { 
this._strings.push(str); 
}; 
StringBuilder.prototype.toString = function() { 
return this._strings.join(""); 
}; 
//按钮调用 
function MyConnectClassFn() { 
var sb = new StringBuilder(); 
sb.append("张三"); 
sb.append("李四"); 
var strResult = sb.toString(); 
alert(strResult); 
}

总结
最后比较以上这三种方法,书上说最后一种速度最快,但是经过我测试,貌似join()是最快的,第三种反而是最慢的,难道我的自定义StringBuilder类有问题?
Javascript 相关文章推荐
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
JavaScript中的私有/静态属性介绍
Jul 26 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
Aug 22 Javascript
jquery中radio checked问题
Mar 16 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
Jul 08 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
Aug 03 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 Javascript
jQuery实现两个select控件的互移操作
Dec 22 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
解决vue项目使用font-awesome,build后路径的问题
Sep 01 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
Jan 06 Javascript
JavaScript 学习笔记(六)
Dec 31 #Javascript
JavaScript 学习笔记(五)
Dec 31 #Javascript
JavaScript 学习笔记(四)
Dec 31 #Javascript
javascript showModalDialog模态对话框使用说明
Dec 31 #Javascript
javascript控制frame,iframe的src属性代码
Dec 31 #Javascript
让IE8支持DOM 2(不用框架!)
Dec 31 #Javascript
javascript 获取表单file全路径
Dec 31 #Javascript
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP制作万年历
2015/01/07 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python 通配符删除文件的实例
2018/04/24 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
学校岗位设置方案
2014/01/16 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
期末考试复习计划
2015/01/19 职场文书
伏羲庙导游词
2015/02/09 职场文书