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 获取checkbox的checked问题
Nov 16 Javascript
js 动态修改css文件的方法
Aug 05 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
Jan 06 Javascript
Bootstrap表单组件教程详解
Apr 26 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
AngularJS入门教程之双向绑定详解
Aug 18 Javascript
jQuery插件ajaxFileUpload使用实例解析
Oct 19 Javascript
python爬取安居客二手房网站数据(实例讲解)
Oct 19 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
Apr 28 Javascript
js中关于Blob对象的介绍与使用
Nov 29 Javascript
详解关于Vue单元测试的几个坑
Apr 26 Javascript
Node.js API详解之 Error模块用法实例分析
May 14 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读取超大文件的实例代码
2012/04/01 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
Yii清理缓存的方法
2016/01/06 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
使用python实现个性化词云的方法
2017/06/16 Python
python线程池threadpool实现篇
2018/04/27 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python async with和async for的使用
2019/06/20 Python
详解python中的模块及包导入
2019/08/30 Python
python程序如何进行保存
2020/07/03 Python
Python 如何实现访问者模式
2020/07/28 Python
Python Map 函数的使用
2020/08/28 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
活动总结报告范文
2014/05/04 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
社团个人总结范文
2015/03/05 职场文书
焦裕禄观后感
2015/06/03 职场文书
养成教育工作总结
2015/08/13 职场文书
java代码实现空间切割
2022/01/18 Java/Android
基于docker安装zabbix的详细教程
2022/06/05 Servers