javascript字符串连接性能提升

问题: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("");
};


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值