ReferenceError StringBuilder未在javascript中定义

时间:2015-12-04 04:52:11

标签: javascript jquery asp.net stringbuilder

我有一个javascript函数,它使用字符串构建器function.it正在工作(95%)所有主流浏览器,如IE8 +,chrome,firefox等。我测试了它并且工作正常,但有时候我会得到错误,如#34; stringbuilder未定义"。对于一些客户来说并非全部,我无法找到哪个浏览器和版本,所以我想知道stringbuilder功能是否适用于所有浏览器?有没有版本限制?我搜索了这个错误,但没有得到任何答案。你们遇到过类似的问题吗?请提出一些链接或方法来解决这个问题。下面是我的代码。

  function GetXmlString() {
        try {
           var sbMain = new StringBuilder();
            sbMain.append("<?xml version='1.0' encoding='UTF-16' ?>");
            sbMain.append("<Application");
            sbMain.append("</Application>");
     }
        catch (e) {
            strXml = "";
            //alert("Error in GetXmlString " + e.name + "\n" + e.message);
            var error = "Error in GetXmlString " + e.name + "\n" + e.message
            $.ajax({ type: "POST",
                url: "AL_GetAjaxValue.aspx",
                data: { type: "LogError", Error: "" + error + "" },
                dataType: "html",
                success: function(msg) {

                },
                error: function() {
                }
            });
        }

    }

我找到了StringBuilder的缩减。这个宣言有什么问题吗?请验证此代码。

function StringBuilder(value) {
        this.strings = new Array("");
        this.append(value);
    }
    StringBuilder.prototype.append = function(value) {
        if (value) {
            this.strings.push(value);
        }
    }
    StringBuilder.prototype.clear = function() {
        this.strings.length = 1;
    }
    StringBuilder.prototype.toString = function() {
        return this.strings.join("");
    }

1 个答案:

答案 0 :(得分:0)

有趣的是,你有时会得到错误而不是其他错误。你是如何陷入这种方法的? StringBuilder不是JavaScript的原生,而是C#类。

如果您发现需要为javascript定义StringBuilder,可以这样做:

//StringBuilder class
function StringBuilder(value){
    this.strings = new Array('');
    this.append(value);
}

// Appends the given value to the end of this instance.
StringBuilder.prototype.append = function (value){
    if (value){
        this.strings.push(value);
    }
}

StringBuilder.prototype.appendLine = function(value){
    if(value){
        this.strings.push(value);
        this.strings.push("\n");
    }
}

// Clears the string buffer
StringBuilder.prototype.clear = function (){
    this.strings.length = 1;
}

// Converts this instance to a String.
StringBuilder.prototype.toString = function (){
    return this.strings.join('');
}