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 相关文章推荐
提升你网站水平的jQuery插件集合推荐
Apr 19 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 Javascript
JavaScript获取表单内所有元素值的方法
Apr 02 Javascript
jquery控制显示服务器生成的图片流
Aug 04 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
May 09 Javascript
jquery无缝图片轮播组件封装
Nov 25 jQuery
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 Javascript
使用kbone解决Vue项目同时支持小程序问题
Nov 08 Javascript
JavaScript实现筛选数组
Mar 02 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
PHP语法速查表
2006/12/06 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
详解babel升级到7.X采坑总结
2019/05/12 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
python自动化测试之连接几组测试包实例
2014/09/28 Python
推荐11个实用Python库
2015/01/23 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
远程研修随笔感言
2014/02/10 职场文书
小学教学随笔感言
2014/02/26 职场文书
铲车司机岗位职责
2014/03/15 职场文书
我爱我校演讲稿
2014/05/21 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
面试自我评价范文
2014/09/17 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle