提高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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章