对于层级深的对象,如何进行深度拷贝

 var a = {
                a: '1',
                b: '2',
                c: {
                    q: {
                        r: '3'
                    },
                    w: {
                        r: '4'
                    }
                }
            }

如这个对象a,假设我要得到一个数组b


b = [
                {
                    a: '1',
                    b: '2',
                    c: {
                        d: {
                            r: '3'
                        }
                    }
                },
                {
                    a: '1',
                    b: '2',
                    c: {
                        d: {
                            r: '4'
                        }
                    }
                }
            ]

除了遍历后赋值给一个中间变量,然后再加到数组b里面,有没有其他办法呢

 JSON.parse()和JSON.stringify()
 先数组转字符串,再字符串转数组
<script>
var a = {
                a: '1',
                b: '2',
                c: {
                    q: {
                        r: '3'
                    },
                    w: {
                        r: '4'
                    }
                }
            }
var str = JSON.stringify(a);
var b=[];
for(var i=0;i<3;i++){
  var obj = JSON.parse(str);
  b.push(obj);
}
b[0]["a"]="r5";//修改其中一个,其他不会变
alert(JSON.stringify(b));
</script>