我认为JavaScript没有像 obj.first 这样的东西,但我想知道这样的事情是否能以任何方式实现:
var foobar = { aint: "foo", an: "bar", array: "foobar" };
var recursiveObjDump = function (obj, idx) {
if (idx == obj.last.index) return obj[idx];
else return obj[idx] + " " + recursiveObjDump(obj, obj[idx].next.index);
};
alert( recursiveObjDump(foobar, foobar.first.index) );
感谢。
答案 0 :(得分:2)
不是真的。 Javascript中的对象是关联数组 - 键/值对的集合。没有指定的顺序,就像在mathematical set中一样(与sequence比较)。因此,寻找像object.first
这样的东西是毫无意义的。
另一方面,你可以绝对强加自己的结构。例如,您可以在Javascript中实现Lisp样式列表,并重复这些列表。 This is a pretty neat article在Javascript中使用函数式编程技术。
最后,Javascript是面向对象的,而不是功能性的,所以你不会找到原生实现的那些功能原语。
编辑:如果您仍想在Javascript中使用函数式编程技术,请查看Functional Javascript。
答案 1 :(得分:1)
您可以使用for in
循环浏览所有属性。
这是一个基本的,您可以添加更好的检测来查找数组等。
var foobar = { aint: "foo", an: "bar", array: "foobar" };
function recusiveDump(obj) {
var output = '';
for(var i in obj) {
if(obj.hasOwnProperty(i)) {
if(typeof obj[i] == 'object') {
output += recusiveDump(obj[i]);
} else {
output += obj[i];
}
}
}
return output;
}
alert(recusiveDump(foobar));
答案 2 :(得分:1)
如果您只想序列化对象,请使用JSON.stringify()。它在Javascript 5中是原生的,你可以从Crockford的网站下载一个脚本,用于更低版本的javascript。 (相同的脚本可以将JSON对象序列化安全地重新分解回javascript对象)