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 DOM操作 基于命令改变页面
May 06 Javascript
Javascript面向对象编程(三) 非构造函数的继承
Aug 28 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
浏览器中url存储的JavaScript实现
Jul 07 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
Dec 08 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
JS canvas绘制五子棋的棋盘
May 28 Javascript
vue2.x数组劫持原理的实现
Apr 19 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
Apr 27 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
May 29 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
用PHP读取IMAP邮件
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
python爬虫之自制英汉字典
2019/06/24 Python
Django 框架模型操作入门教程
2019/11/05 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
Django缓存Cache使用详解
2020/11/30 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
银行求职推荐信范文
2013/11/30 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
企业后勤岗位职责
2014/02/28 职场文书
入股协议书范本
2014/04/14 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript