使用array实现类似StringBuffer的效果你上面的代码,会在内存中生成很多无谓的字符串

解决方案 »

  1.   


    var strBuffer = [];
    for (var i = 0; i < rightDataLength; i++) {
      strBuffer.push(rightOptions[i].value).push("|").push(rightOptions[i].text).push(";");
    }
    RightDataObj.value = strBuffer.join("");
      

  2.   

    http://blog.csdn.net/majianan/archive/2008/12/19/3561009.aspx
    JavaScript中字符串连接性能优化使用 Array 对象存储字符串,之后使用 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:使用 StringBuffervar 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%以上的时间。