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 火狐下取本地路径实现思路
Apr 02 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
jquery新的绑定事件机制on方法的使用方法
Apr 15 Javascript
jquery实现点击变换导航样式的方法
Aug 31 Javascript
Angularjs 滚动加载更多数据
Mar 17 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
React服务端渲染(总结)
Jul 01 Javascript
JSON 数据格式详解
Sep 13 Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 Javascript
Vue封装一个简单轻量的上传文件组件的示例
Mar 21 Javascript
JavaScript队列结构Queue实现过程解析
Mar 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生成html分页列表的代码
2007/03/18 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
教你php如何实现验证码
2016/01/20 PHP
twig模板常用语句实例小结
2016/02/04 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
PHP培训要多少钱
2017/06/06 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
子页向父页传值示例
2013/11/27 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
python中xlutils库用法浅析
2020/12/29 Python
程序集与命名空间有什么不同
2014/07/25 面试题
化工操作工岗位职责
2014/04/29 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
主要负责人任命书
2014/06/06 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
营销经理工作检讨书
2014/11/03 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
Python读写yaml文件
2022/03/20 Python
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js
python中 .npy文件的读写操作实例
2022/04/14 Python