ReferenceError StringBuilder未在javascript中定义

ReferenceError StringBuilder is not defined in javascript

本文关键字:定义 javascript 未在 StringBuilder ReferenceError      更新时间:2023-09-26

我有一个javascript函数,它使用字符串生成器函数。它可以工作(95%)所有主要的浏览器,如IE8+、chrome、firefox等。我测试过它,它运行良好,但有时我会遇到类似"字符串生成器未定义"的错误。它是为一些客户而来的,而不是所有客户,我找不到哪个浏览器和版本,所以我想知道字符串生成器功能是否适用于所有浏览器?有版本限制吗?我查找了这个错误,但没有得到任何答案。你们面临过类似的问题吗?请建议一些链接或方法来解决这个问题。下面是我的代码。

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

有趣的是,有时会出现错误,而不是其他错误。你是怎么陷入这种方法的?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('');
}