<script>
    //递归
    function test(n) {
        if (n == 1) {
            return 1
        }
        console.log(n)
        return n * test(n - 1)
    }
    console.log(test(3))
    </script>
var obj={
            obj1:{
                obj2:{
                    obj3:{
                        obj4:{
                            name:'liujin'
                        }
                    }
                }
            }
        }

        function fn(o){
            if(typeof o != 'object'){
                return o;
            }
            for(var attr in o){
                console.log(attr)
            }
            return fn(o[attr])
        }
        fn(obj)

结果:

obj1
 obj2
 obj3
 obj4
 name

var obj={
obj1:{
obj2:{
obj3:{
obj4:{
name:'liujin'
}
}
}
}
}

function fn(o){
if(typeof o != 'object'){
return o;
}
for(var attr in o){
console.log(o[attr])
}
return fn(o[attr])
}
fn(obj)

结果:

Object {obj2: Object}
Object {obj3: Object}
Object {obj4: Object}
Object {name: "liujin"}
liujin

对象的引用

var a={
  m:  10
}

var b=a;

b.m=20;

alert(b.m)
alert(a.m)  

对象的拷贝

<script>
var obj = {
    a : { b : 10 }
};

/*function copy(obj){  //浅拷贝

    var newObj = {};

    for(var attr in obj){
        newObj[attr] = obj[attr];
    }

    return newObj;

}*/

function deepCopy(obj){  //深拷贝

    if(typeof obj != 'object'){
        console.trace();
        return obj;
    }

    var newObj = {};

    for(var attr in obj){
        newObj[attr] = deepCopy(obj[attr]);
    }

    return newObj;

}

var obj2 = deepCopy(obj);

obj2.a.b = 20;

alert(obj.a.b);
</script>

var deepCopy= function(source) {

var result={};

for (var key in source) {

result[key] = typeof source[key]===’object’? deepCoyp(source[key]): source[key];

}
return result;
}

递归 与 js 对象的引用的更多相关文章

  1. 用浅/深拷贝、和HTML5方法解决js对象的引用的问题

    先来看一个例子 例一: var a=[1,2,3]; var b=a; b.push(4); alert(b);//1,2,3,4 alert(a);//1,2,3,4 var a=[1,2,3]; ...

  2. JS对象的引用,对象的拷贝

    目录 一.场景 二.浅拷贝 三.深拷贝 一.场景 除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝 将一个对象赋值给另外一个对象. var a = [1,2,3]; ...

  3. js对象的引用

    /*var a = [1,2,3]; var b = [1,2,3]; alert( a == b ); //false*/ //基本类型:赋值的时候只是值得复制 /* var a = 5; var ...

  4. javascript基础-js对象

    一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = ...

  5. js 操作对象的引用和操作实际对象的区分

    JavaScript高级程序设计-第3版-中 有这么一段话: 在操作对象时,实际上是在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的①. ① 这种说法不严密,当复制保存着对象的某个变 ...

  6. js 对象深复制,创建对象和继承

    js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ...

  7. 超实用的JavaScript代码段 Item8 -- js对象的(深)拷贝

    js 对象 浅拷贝 和 深拷贝 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: var Chinese = { nation:'中国' } var Doctor ...

  8. JS 对象的深拷贝和浅拷贝

    转载于原文:https://www.cnblogs.com/dabingqi/p/8502932.html 这篇文章是转载于上面的链接地址,觉得写的非常好,所以收藏了,感谢原创作者的分享. 浅拷贝和深 ...

  9. js对象进行浅复制,深拷贝的方法

    js对象浅拷贝和深拷贝详解   本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷 ...

随机推荐

  1. ACM1024动态规划

    #include <cstdio> #include <algorithm> #define FI(a, b, c) for(int a = (b); a <= (c); ...

  2. SRM 440(1-250pt, 1-500pt)

    DIV1 250pt 题意:小球从一段折线斜坡上滚下来,告诉所用时间,求重力加速度. 解法:二分答案模拟即可. tag:二分,simulation // BEGIN CUT HERE /* * Aut ...

  3. GraphViz特性笔记(一)

    默认纵向,使用“rankdir="LR";”可使视图横向排列: 定义节点可以单独列出,“0;”方便自动生成: “edge[fontname="微软雅黑"];”设 ...

  4. C#中5中timer的比较

    C#中有5个timer,它们的主要区别如下: System.Threading.Timer  在线程池启动一个后台任务.我前段时间写过一个关于timer的垃圾回收的需要注意一下,参见谁动了我的time ...

  5. spring security +spring boot 自定义 403 页面

    用的spring security  做的权限控制, 当  访问没有权限, 跳转 会跳到默认403 页面.不符合当前项目需求. 一下是解决方式: package com.ycmedia; import ...

  6. SpringMVC DispatcherServlet 说明与web配置

    使用Spring MVC,配置DispatcherServlet是第一步. DispatcherServlet是一个Servlet,所以能够配置多个DispatcherServlet. Dispatc ...

  7. 如何在word2007中并排查看对比显示两个文档

    使用word编辑或修改文件时,有时会需要对两个文档进行对比,此时就应该使用并排查看功能. 点击“视图”菜单中的“并排查看” 所打开的两个文档就会同时打开,并排显示 可点击“同步滚动”设置或取消同步滚动

  8. 韩玉琪 《Linux内核分析》MOOC课程

    http://www.cnblogs.com/hyq20135317/p/5422516.html http://mooc.study.163.com/course/USTC-1000029000

  9. java Permissions and Security Policy--官方文档

    3 Permissions and Security Policy 3.1 The Permission Classes The permission classes represent access ...

  10. Java基础知识强化之集合框架笔记15:List集合的特点

    1. List集合的特点 List本身也是一个接口,如下: public interface List<E> extends Collection<E> (1)List是有序的 ...