複製代碼 代碼如下:var str = "hello";
str += " world";
後台所做工作:
1)建立儲存 "hello" 的字串,且使 str 指向它。
2)建立儲存 "world" 的字串。
3)建立儲存結果的字串。
4)將 str 中的當前內容複寫到結果字串中。
5)把 world 複製到結果字串中。
6)更新 str ,使 str 指向結果字串。
每拼接一次字串就迴圈重複2)~6),如果重複成百上千次則會非常消耗資源,影響效能。
解決方案:
使用 Array Object Storage Service字串,之後使用 join()方法輸出結果。
仿照 Java 中的 StringBuffer 類。 複製代碼 代碼如下:function StringBuffer(){
this._strings = new Array;
}
StringBuffer.prototype.append = function (str){
this._strings.push(str);
}
StringBuffer.prototype.toString = function (){
return this._strings.join("");
}
測試效能:
代碼1:使用 "+=" 拼接字串 複製代碼 代碼如下:var d = new Date();
var str = "";
for(var i=0;i<10000;i++){
str += "test";
}
var d2 = new Date();
document.writeln(d2.getTime()-d.getTime());
代碼2:使用 StringBuffer 複製代碼 代碼如下:var d = new Date();
var str = new StringBuffer();
for(var i=0;i<10000;i++){
str.append("test");
}
var res = str.toString();
var d2 = new Date();
document.writeln(d2.getTime()-d.getTime());
從多次測試結果看來,使用StringBuffer 可以節省50%以上的時間。