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 相关文章推荐
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
Aug 13 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
May 27 Javascript
jQuery实现的动态伸缩导航菜单实例
May 07 Javascript
JavaScript中的fontsize()方法使用详解
Jun 08 Javascript
浅谈Javascript中substr和substring的区别
Sep 30 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 Javascript
JS实现获取当前URL和来源URL的方法
Aug 24 Javascript
js 性能优化之快速响应的用户界面
Feb 15 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 Javascript
微信小程序实现禁止分享代码实例
Oct 19 Javascript
如何在CocosCreator里画个炫酷的雷达图
Apr 16 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
python定时器(Timer)用法简单实例
2015/06/04 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Django ModelForm操作及验证方式
2020/03/30 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
编写python代码实现简单抽奖器
2020/10/20 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
党章学习心得体会2016
2016/01/14 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
详解Oracle块修改跟踪功能
2021/11/07 Oracle