在javascript里实现StringBuilder

 Step 1.探秘JavaScript里的字符串连接
举例:
var str = "good";
str += " morning";
代码实际执行步骤和C#中的类似
1.分配"good"的内存
2.分配" morning"的内存
3.开辟两个字符串连接后的内存
4.将str当前的内容复制到新内存
5.把" morning"复制到新内存
6.把str的引用指向新的内存
问题:当涉及到很多字符串连接时,就会感觉到效率问题
解决方法:用Array对象存储字符串,然后用join方法连接字符串
var array = new Array();

 // 查了一下W3C有关Array的创建,它说:"you can add as many values as you need to

 //define as many variables you require",试了下可以达到10的10次方的数量级
array[0] = "good";
array[1] = " morning";
var str = array.join("");

步骤:
1.开辟存储字符串的内存
2.将每个字符串复制到新的内存,str指向它

Step 2.如何实现javascript 的 StringBuilder
举例:

<html>
<head>
<title></title>
<script>

function StringBuilder()
{
 this._stringArray = new Array();
}

StringBuilder.prototype.append = function(str)
{
 this._stringArray.push(str);
}

StringBuilder.prototype.toString = function(joinGap)
{
 return this._stringArray.join(joinGap);
}

function TestArray()
{
    var stringBuilder = new StringBuilder();
    stringBuilder.append("good");
    stringBuilder.append("moring");
    var str= stringBuilder.toString(" ");
    alert(str);
}
</script>
</head>
<body onload="TestArray();">
</body>
</html>

说明:可以把下面代码放到js文件中,例如取名"StringBuilder.js",然后引用即可。
<html>
<head>
<title></title>
<script src="StringBuilder.js"></script>
<script>
function TestArray()
{
    var stringBuilder = new StringBuilder();
    stringBuilder.append("good");
    stringBuilder.append("moring");
    var str= stringBuilder.toString(" ");
    alert(str);
}
</script>
</head>
<body onload="TestArray();">
</body>
</html>

posted @ 2008-08-15 16:49  Matthew Lin  阅读(4587)  评论(3编辑  收藏  举报