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 相关文章推荐
用JS实现一个页面多个css样式实现
May 29 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
js函数与php函数的区别实例浅析
Jan 12 Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 Javascript
jQuery对JSON数据进行排序输出的方法
Jun 24 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
微信小程序http连接访问解决方案的示例
Nov 05 Javascript
nuxt中使用路由守卫的方法步骤
Jan 27 Javascript
JS实现省市县三级下拉联动
Apr 10 Javascript
详解Vue的sync修饰符
May 15 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中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
javascript全局变量封装模块实现代码
2012/11/28 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
javascript的BOM
2016/05/03 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python logging模块用法示例
2018/08/28 Python
python3人脸识别的两种方法
2019/04/25 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
Python代码需要缩进吗
2020/07/01 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
python 实现表情识别
2020/11/21 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
初中班主任评语大全
2014/04/24 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL