匿名函数实现递归
{ a: "1", children: [{ a: "11" }, { a: "12", children: [{ a: "121" }] }] }
现在想着把属性a改成id 结果为
config= { id:"1", children:[ { id:"11" }, { id:"12", children:[ { id:"121" }] }] }
考虑用函数递归实现,又考虑到这种函数只是用一次,所以考虑用匿名函数
匿名函数的时候又遇到新问题,如何对children调用该匿名函数?用到了调用函数时arguments,使用arguments.callee这个对象就是当前匿名函数。
var config = { a: "1", children: [{ a: "11" }, { a: "12", children: [{ a: "121" }] }] }; (function (config) { if (config.a != undefined) { config.id = config.a; delete config.a; } if(config.children){ for (var i = 0; i < config.children.length; i++) { arguments.callee(config.children[i]); } } })(config)