Javascript 从对象本身调用对象构造函数
我是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(
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好的,我也会这么做,但奇怪的是,它第一次工作,但在第二级调用时挂起。