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 相关文章推荐
兼容ie和firefox js关闭代码
Dec 11 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
Oct 20 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
Jun 05 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
Dec 08 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
Apr 14 Javascript
jquery实现搜索框功能实例详解
Jul 23 jQuery
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
May 17 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
ES6学习教程之Promise用法详解
Nov 22 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
怎么使 Mysql 数据同步
2006/10/09 PHP
我的论坛源代码(三)
2006/10/09 PHP
PHP $_FILES函数详解
2011/03/09 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
python生成日历实例解析
2014/08/21 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Python中的ceil()方法使用教程
2015/05/14 Python
Python抓取百度查询结果的方法
2015/07/08 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Python3离线安装Requests模块问题
2019/10/13 Python
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
家庭教育的心得体会
2014/09/01 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
python b站视频下载的五种版本
2021/05/27 Python
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
python实现会员管理系统
2022/03/18 Python
MySQL sql模式设置引起的问题
2022/05/15 MySQL
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers