如果 person是按引用传递的,那么 person 就会自动被修改为指向其 name 属性值 为"Greg"的新对象 。
- 4.类型检测
person instanceof Object
所有引用类型的值都是 Object 的实例 。因此,在检测一个引用类型值和 Object 构造 函数时,instanceof 操作符始终会返回 true 。当然,如果使用 instanceof 操作符检测基本类型的 值,则该操作符始终会返回 false,因为基本类型不是对象 。
引用类型嵌套
看到这里,知道引用数据类型赋值是引用地址,对象值是存放在堆中的 。现在,在对象中A中嵌套对象B,那么A对象内存堆中存放的是A对象内存?还是A内存的引用尼?是如何赋值的?
var obj = { arr:[1,2,3]}var obj1 = obj; //复制obj的引用地址var arr = obj.arr //复制obj中arr的引用地址var arr1 = obj1.arr // 复制arr中引用地址arr1[0] = [1] console.log(arr) //[[1],1,2,3] console.log(arr1 === obj.arr) //true //地址还是相同obj.arr = [4,5,6] //突然改变obj中arr,指向新对象,obj中arr的引用也随之改变console.log(arr) //[[1],1,2,3] //而此时arr、arr1的引用还没有改变console.log(obj1.arr === obj.arr) //true //obj的引用没有改变console.log(obj1.arr === arr) //false
文章插图
从上面的例子可以看出,object1中储存的是arr的引用地址,与arr、arr1拥有同一个引用地址 。将obj1的arr重新赋值新的对象后,obj1中的引用地址会重新分配,obj里的arr也跟随改变 。假如,object中存放的是arr的内存,那么obj1中arr重新指向新对象时,obj中的arr将会之断开联系,像arr1一样,显然不是 。
文章插图
推荐阅读
- 福鼎白茶的茶香 茶韵 茶效
- 古集宝典里描述的茶叶九大养生功效
- 藏茶的包容性及功效特点
- 面试很有用哦 SQL常用语句总结
- 系统管理员入门:排除故障
- 梦到父亲的坟墓 梦见父亲的坟墓是什么预兆
- 将ETL工具整合到您的数据仓库策略中
- 海豚是世界上最什么的动物 海豚是鸟类动物吗
- 小程序页面栈详解
- 淘宝直播间领到的红包在哪里 淘宝直播领的红包在哪里