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

<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;…
先来看一个例子 例一: 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]; var b=a; b=[1,2,3,4] alert(b);//1,2,3,4 alert(a);//1,2,3 这两种方法得出的结果是不一样的. 第一个程序,是对象的引用, 把a的值附给b,a与b之间是引用的关系,当两者之间是引用的关系时,改变任一变量,都会影响另一个变量. 第二个程序,只是对b的…
目录 一.场景 二.浅拷贝 三.深拷贝 一.场景 除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝 将一个对象赋值给另外一个对象. var a = [1,2,3]; var b = a; b.push(4); // b中添加了一个4 alert(a); // a变成了[1,2,3,4] 自定义对象 var obj = {a:10}; var obj2 = obj; obj2.a = 20; // obj2.a改变了, alert(obj.a); // 20,o…
/*var a = [1,2,3]; var b = [1,2,3]; alert( a == b ); //false*/ //基本类型:赋值的时候只是值得复制 /* var a = 5; var b = a; b+=3; alert(b); alert(a);*/ //对象类型:赋值的时候不仅是值的赋值,而且还有地址的传递. /* var a = [1,2,3]; var b = a; //a和b住一起了,都存了[1,2,3] b.push(4); alert(b); alert(a);*/…
一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = 35; teacher.job = "教师"; teacher.say = function( ) {     return this.name + this.age + this.job;        //this代表的是teacher下的作用域 }; console.log(tea…
JavaScript高级程序设计-第3版-中 有这么一段话: 在操作对象时,实际上是在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的①. ① 这种说法不严密,当复制保存着对象的某个变量时,操作的是对象的引用.但在为对象添加属性时,操作的是实际的对象. 这里的重点是①的注释,初次看的时候没有理解,后来理解了,举个例子: 先看①的前半句,比较好理解: 当复制保存着对象的某个变量时,操作的是对象的引用. var a = { n: 2 }; //这里把 { n: 2 } 赋值给 a,实…
js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 var a=[1,2,3], b=a; b[0]=0; a[0] 此时显示的结果为0,也就是说a和b指向的是同一个数组,只是名字不一样罢了. 单层深复制: 1.js的slice函数: 返回一个新的数组,包含下标从 start 到 end (不包括该元素,此参数可选)的元素. 控制台输入: var a…
js 对象 浅拷贝 和 深拷贝 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: var Chinese = { nation:'中国' } var Doctor = { career:'医生' } function extendCopy(p) { var c = {}; for (var i in p) { c[i] = p[i]; } c.uber = p; return c; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 使用的时…
转载于原文:https://www.cnblogs.com/dabingqi/p/8502932.html 这篇文章是转载于上面的链接地址,觉得写的非常好,所以收藏了,感谢原创作者的分享. 浅拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用(堆和栈的关系,简单类型Undefined,Null,Boolean,Number和String是存入堆,直接引用,object array 则是存入桟中,只用一个指针来引用值),如果拷贝后的对象发生变化,原对象也会发生变化.只有深拷贝才…
js对象浅拷贝和深拷贝详解   本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 var Chinese = { nation:'中国' } var Doctor = { career:'医生' } function extendCopy(p) { var c = {}; for (var i in p) {…