&引用;“递归太多”;在这个用JavaScript编写的递归函数中(obj2str)
这段代码是怎么写的:&引用;“递归太多”;在这个用JavaScript编写的递归函数中(obj2str),javascript,jquery,recursion,type-conversion,object-to-string,Javascript,Jquery,Recursion,Type Conversion,Object To String,这段代码是怎么写的: function obj2string(obj) { var result = ''; for(var i in obj) { if(typeof(obj[i]) === 'object') { result += obj2string(obj[i]); } else { result += i + " => " + obj[i] + "\n"; }
function obj2string(obj) {
var result = '';
for(var i in obj) {
if(typeof(obj[i]) === 'object') {
result += obj2string(obj[i]);
} else {
result += i + " => " + obj[i] + "\n";
}
}
return result;
}
它应该递归地将结果字符串与新属性相关联,但是在某个点上有太多的递归
我正在传递这样一个对象:$(this)代码>->来自jQuery
$(this)
作为此jQuery选择器的实例:$('.debug')
witch在当前文档中有一个匹配的类。if(typeof(obj[i])==='object'){
将在obj[i]
为null
时执行。你知道吗?用$尝试一下。isPlainObject()
()调用JSON。Chrome控制台中的stringify(jQueryObject)提供了一个“循环结构”错误。几乎可以肯定,您有一个循环引用(即输入对象的一个属性(或这些属性的一个属性,等等))引用了结构中的另一个属性,该属性指向自身
var s = JSON.stringify(obj, null, 4);
片刻的思考应该会揭示为什么这不可能工作。我需要我的函数在没有任何第三方依赖项(如JSON对象及其方法)的情况下工作。无论如何,谢谢。它是FireFox 3.5+、IE 8+、Opera 10.5+和所有Webkit浏览器的内置功能。你要赢得我的尊重!接受这个答案!这绝对是需要注意的当然,但我不知道它如何导致OP代码中的“太多递归”(如图所示)。下面是一个值为null
的prop示例。它不会导致递归问题:var obj={test:“one”,另一个:{test2:“two”},prop:null,oneMore:“testing”}
输出:“测试=>1个测试2=>2个测试多一个=>测试”