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 相关文章推荐
JavaScript 动态将数字金额转化为中文大写金额
May 14 Javascript
JavaScript 布尔操作符解析  && || !
Aug 10 Javascript
jQuery实现类似滑动门切换效果的层切换
Sep 23 Javascript
在父页面调用子页面的JS方法
Sep 29 Javascript
showModelDialog弹出文件下载窗口的使用示例
Nov 19 Javascript
jQuery中insertAfter()方法用法实例
Jan 08 Javascript
JavaScript通过字典进行字符串翻译转换的方法
Mar 19 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
Vue多系统切换实现方案
Jun 05 Javascript
js实现unicode码字符串与utf8字节数据互转详解
Mar 21 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 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/10/09 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
Nodejs实现用户注册功能
2019/04/14 NodeJs
js动态获取时间的方法分析
2019/08/02 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python中threading模块join函数用法实例分析
2015/06/04 Python
python检测是文件还是目录的方法
2015/07/03 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
Python面向对象之Web静态服务器
2019/09/03 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
大学生优秀团员事迹材料
2014/01/30 职场文书
商务宴会祝酒词
2015/08/11 职场文书
感恩教育主题班会
2015/08/12 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
2019军训心得体会
2019/06/27 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL