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与运算符和或运算符的妙用
Feb 14 Javascript
jquery显示隐藏input对象
Jul 21 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
jquery 禁止鼠标右键并监听右键事件
Apr 27 jQuery
easyUI下拉列表点击事件使用方法
May 18 Javascript
简单快速的实现js计算器功能
Aug 17 Javascript
Three.js中网格对象MESH的属性与方法详解
Sep 27 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
JavaScript实现求最大公共子串的方法
Feb 03 Javascript
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
在Vue中使用antv的示例代码
Jun 29 Javascript
用vite搭建vue3应用的实现方法
Feb 22 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
3种平台下安装php4经验点滴
2006/10/09 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
详解php中的implements 使用
2017/06/13 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python求斐波那契数列示例分享
2014/02/14 Python
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
python定时截屏实现
2020/11/02 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server