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 相关文章推荐
ExtJs使用总结(非常详细)
Mar 22 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
node+express+jade制作简单网站指南
Nov 26 Javascript
JS遍历页面所有对象属性及实现方法
Aug 01 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
Jun 19 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
Jan 30 Javascript
详解Vue文档中几个易忽视部分的剖析
Mar 24 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
Dec 30 Javascript
微信小程序身份证验证方法实现详解
Jun 28 Javascript
微信小程序实现加入购物车滑动轨迹
Nov 18 Javascript
VUE实现吸底按钮
Mar 04 Vue.js
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实现的获取URL信息的类
2007/01/02 PHP
php url路由入门实例
2014/04/23 PHP
PHP递归创建多级目录
2015/11/05 PHP
JS检测图片大小的实例
2013/08/21 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
使用svg实现动态时钟效果
2018/07/17 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
在python里面运用多继承方法详解
2019/07/01 Python
python 用所有标点符号分隔句子的示例
2019/07/15 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
十八大闭幕感言
2014/01/22 职场文书
初一学生期末评语
2014/04/24 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android