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 相关文章推荐
Javascript 面向对象编程(coolshell)
Mar 18 Javascript
仿百度联盟对联广告实现代码
Aug 30 Javascript
jQuery结合ajax实现动态加载文本内容
May 19 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
Jan 04 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
vue--vuex详解
Apr 15 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
Apr 25 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扩展imagick
2014/06/02 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
js实现密码强度检验
2017/01/15 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
全面了解python字符串和字典
2016/07/07 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
Python守护进程实现过程详解
2020/02/10 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
软件测试面试题
2015/10/21 面试题
不假外出检讨书
2014/01/27 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
学生上课说话检讨书
2014/10/25 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
加入学生会自荐书
2015/03/05 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
珍爱生命主题班会
2015/08/13 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers