Archives

Archive for 2008-6

比str+=str;高效的字符串连接方法

在javascript编程中经常要连接字符串,很多人都习惯用:

var str=“hello”;

str+=“world”;

这种操作在JS中要经过6个步骤,非常耗资源:
(1) 创建存储”hello”的字符串.
(2) 创建存储”world”的字符串.
(3) 创建存储连接结果的字符串.
(4) 把str的当前内容复制到结果中.
(5) 把”world”复制到结果中.
(6) 更新str,使它指向结果.
解决方法就是用array对象来连接字符串:

var arr = new Array;

arr[0] = “hello”;

arr[1] = “world”;

var str = arr.join(“”);

执行只需两步,
(1) 创建存储结果的字符串.
(2) 把每个字符串复制到结果中的合适位置.
下面为了方便使用,给出了一个字符串连接类:

function SGen(){this._str_ = new Array;};

SGen.prototype.add = function (str){this._str_.push(str);};

SGen.prototype.toString = function (){return this._str_.join(“”);};

 

var buffer = new SGen();

buffer.add(“hello “);

buffer.add(“world”);

var result = buffer.toString();

buffer = null;