提高js拼接字符串效率--自定义StringBulider
我们知道java中String是引用类型,使用+=进行字符串拼接将会频繁地分配新地址,指向新的地址块,这无疑白白地消耗了系统的性能。javascript中的字符串类型同java的String类似,如果我们大量使用+=进行字符串拼接的话,将会使界面失去响应(卡死状态)。
无论是java还是.net 中都有提供StringBuffer()或StringBuilder() 的方法来实现大数据量拼接效率问题,那javascript呢?它是如何解决此问题的呢?其实javascript中可以使用数组来提高拼接的效率,通过数组的push()方法来添加数据,使用数组的join()方法来转成成字符串。
<script type="text/javascript"> var strArr = new Array(); strArr.push("aaaa"); strArr.push("bbbb"); strArr.push("ccccc"); alert(strArr.join(‘ ‘)); </script>
此种方法可以大大提高拼接的效率,但是它有个小小的问题,就是不能连续地push,例如这样的: strArr.push("aaa").push("bbb").push("ccc"); ,它就实现不了,不符合我们的编程习惯,所以我们自己封装了个StringBuffer的js类,让编程更easy!
/** * @Description: 字符串拼接 * @CreateTime: 2014-1-18 下午2:42:35 * @author: chenzw * @version V1.0 */ function StringBulider() { this.data = new Array(); } /** * 拼接字符串,可以连续拼接 * @return {} */ StringBulider.prototype.append = function(){ this.data.push(arguments[0]); return this; } /** * 转成字符串输出 * @return {} */ StringBulider.prototype.toString = function(){ if(arguments.length > 0){ return this.data.join(arguments[0]); } else{ return this.data.join(‘‘); } } /** * 判断字符串数组是否为空 * @return {} */ StringBulider.prototype.isEmpty = function(){ return this.data.length <=0; } /** * 清空字符串数组 */ StringBulider.prototype.clear = function(){ this.data = []; this.data.length = 0; }
/** * 测试数据 */ var sb = new StringBulider(); sb.append("a").append("b").append("c").append("d"); alert(sb.toString(‘,‘)); //结果: a,b,c,d
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。