匿名函数实现递归

{
            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)

  

posted @ 2013-12-04 11:41  你妹的取名这么难  阅读(1925)  评论(0编辑  收藏  举报