提高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
 

发布了109 篇原创文章 · 获赞 101 · 访问量 216万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章