Javascript 从对象本身调用对象构造函数

Javascript 从对象本身调用对象构造函数,javascript,css,Javascript,Css,我是javascript对象的新手,在我正在进行的项目中,我遇到了一个问题,例如,我必须从内部调用对象构造函数 function MediaRule(name, parent, string) { this.name = name; this.parent = parent; this.rules = new Array(); while(string != "") { if (string.charAt(0) == '@') { if (string.search(

我是javascript对象的新手,在我正在进行的项目中,我遇到了一个问题,例如,我必须从内部调用对象构造函数

function MediaRule(name, parent, string) {
this.name = name;
this.parent = parent;
this.rules = new Array();

while(string != "") {

    if (string.charAt(0) == '@') {
        if (string.search("@keyframes") == 0) {

        }
        else {
            mediaString = new String;
            var endString = false;
            var nestLevel = 0;
            while (endString == false) {
                var brace = string.indexOf("}");
                var getString = string.substring(0,brace+1).trim();
                mediaString += getString;
                string = string.replace(getString, "").trim();
                if (string.charAt(0) == "@") {
                    nestLevel++;
                }
                else if (string.charAt(0) == "}") {
                    if (nestLevel > 0) {
                        mediaString += "}";
                        string = string.replaceAt(0, "");
                        nestLevel--;
                    }
                    if ((nestLevel == 0) && (string.charAt(0) == "}")) {
                        mediaString += "}";
                        string = string.replaceAt(0, "");
                        var aIndex = mediaString.indexOf("{");
                        var bIndex = mediaString.lastIndexOf("}");
                        var eleString = mediaString.substring(aIndex+1,bIndex).trim();
                        var mediaQName = mediaString.substring(0, aIndex).trim();
                        this.rules.push(new MediaRule(mediaQname, this.name, eleString))
                        endString = true;
                    }
                }
            }
        }
    }

当满足某些条件时,这个对象构造函数会从内部一次又一次地被调用。问题是,如果我嵌套一个级别,它就会工作,但超过这个级别,浏览器就会挂起。我想我在调用构造函数的方式上出了问题。无论同一字符串模式嵌套多少次,我都希望它能够正常工作

除了复杂的代码结构之外,您的问题之一可能是mediaString是window->全局变量的全局属性。尝试使用var mediaString。可以从函数中调用函数,也可以从构造函数中调用构造函数,只要它不会永远持续。我建议您在调试器中跟踪代码,观察正在发生的事情,并发现它挂起的原因,以及当它没有达到您期望的效果时。很抱歉,粘贴代码时出现了错误,我已经在使用var mediaString@首先,请尝试重新构造代码。我想没有人想读和理解它。最后你应该有更少的缩进级别。好的,先生,我将再次检查我的代码@jfriend00好的,我也会这么做,但奇怪的是,它第一次工作,但在第二级调用时挂起。