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 引发两次$(document.ready)事件
Jan 15 Javascript
jQuery实现动画效果的实例代码
May 07 Javascript
js算法中的排序、数组去重详细概述
Oct 14 Javascript
node.js中的fs.exists方法使用说明
Dec 17 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
详细AngularJs4的图片剪裁组件的实例
Jul 12 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
Mar 23 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
Sep 27 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 编程安全性小结
2010/01/08 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
短信提示使用 特效
2007/01/19 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
JS交换变量的方法
2015/01/21 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
vue项目中使用百度地图的方法
2018/06/08 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
python局部赋值的规则
2013/03/07 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
Pycharm更换python解释器的方法
2018/10/29 Python
python实现宿舍管理系统
2019/11/22 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
ASP.NET Core中的配置详解
2021/02/05 Python
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
交通安全教育制度
2014/02/02 职场文书
小学生期末评语
2014/04/21 职场文书
导师评语大全
2014/04/26 职场文书
活动宣传策划方案
2014/05/23 职场文书
求职信怎么写范文
2014/05/26 职场文书
运动会报道稿300字
2014/10/02 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
Docker部署Mysql8的实现步骤
2022/07/07 Servers
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技