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技术实现的web小游戏(不含网游)
Jun 12 Javascript
浅谈JS日期(Date)处理函数
Dec 07 Javascript
Javascript writable特性介绍
Feb 27 Javascript
详解JavaScript函数对象
Nov 15 Javascript
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
js实现3d悬浮效果
Feb 16 Javascript
vue组件之Alert的实现代码
Oct 17 Javascript
详解vue组件基础
May 04 Javascript
vue多次循环操作示例
Feb 08 Javascript
JavaScript函数IIFE使用详解
Oct 21 Javascript
layui实现数据表格隐藏列的示例
Oct 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
使用Apache的rewrite技术
2006/06/22 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
python实现绘制树枝简单示例
2014/07/24 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
Python用模块pytz来转换时区
2016/08/19 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
matplotlib中legend位置调整解析
2017/12/19 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
Python的Lambda函数用法详解
2019/09/03 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
网络管理员岗位职责
2014/03/17 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
table不让td文字溢出操作方法
2022/12/24 HTML / CSS