您的位置:首页 > Web前端 > JavaScript

javascript字符串连接性能提升

2015-10-22 16:09 856 查看
问题:javascript常见的性能问题是字符串连接,跟Java语言类似,我们一般采用比较简单但是性能不优的方式,如下:

var sTemp = "Welcome ";
sTemp += " <span style="font-family: Arial, Helvetica, sans-serif;">China</span><span style="font-family: Arial, Helvetica, sans-serif;">"';</span>


这段代码在幕后执行的方法如下:

1. 创建存储 “Welcome”的字符串;

2. 创建存储“China”的字符串;

3. 创建存储结果的字符串;

4. 把“Welcome”的字符串复制到结果中;

5. 把"China"的字符串复制到结果中;

6. 更新sTemp,使它指向到结果。

每次完成字符串连接都会进行2~6的步骤,所以使用如上方法连接字符串非常浪费资源,如果执行上述操作多次会造成性能问题。

解决方案:使用Array对象存储字符串,然后用join方法创建最终字符串。

var aTemp = new Array();
aTemp[0] = "Welcome";
aTemp[1] = "China";
var sTemp = aTemp.join("");

虽然这样的方案确实可以解决性能问题。但是对比JAVA中StringBuffer这种来说,感觉还是不爽,写这么多代码,愁人,是不是我们自己封装一个这样的方法呢?
/**
* @author zhengtan
* @description 实现类似JAVA中StringBuffer连接字符串功能,提高字符串连接效率
* @example
* var sbTemp = new StringBuffer();
* sbTemp.append("Welcome");
* sbTemp.append("China");
* var sTemp = sbTemp.toString();
*/
function StringBuffer(){
this._strings_ = new Array();
}
StringBuffer.prototype.append = function(str){
this._strings_.push(str);
};
StringBuffer.prototype.toString = function(){
return this._strings_.join("");
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript