标题:
普通类型和对象的区别
[打印本页]
作者:
look_w
时间:
2019-3-11 20:14
标题:
普通类型和对象的区别
1.Chrome 打开即占用 1G 内存
2.Chrome 各每个网页分配一定数量的内存
3.这些内存要分给页面渲染器、网络模块、浏览器外壳和 JS 引擎(V8引擎)
4.JS 引擎将内存分为代码区和数据区
5.我们只研究数据区
6.数据区分为 Stack(栈内存) 和 Heap(堆内存)
7.简单类型的数据直接存在 Stack 里
8.复杂类型的数据是把 Heap 地址存在 Stack 里
接下来我们用四个典型的面试题来剖析一波:
四个面试题
第一题:
var a = 1
var b = a
b = 2
请问 a 显示是几?
b=a就是把a在stack中的东西放到b在stack中的位置,然后b=2,就是把b在stack中的值改为2,不影响a在stack里面的值。
第二题:
var a = {name: 'a'}
var b = a
b = {name: 'b'}
请问现在 a.name 是多少?
第一句:申明一个变量a,将一个{name: 'a'}这个对象赋值给a,{name: 'a'}存在heap中,在stack中只存{name: 'a'}的地址(此处假设为address:110)。
第二句:b=a就是把a在stack中的地址复制一份放在b在stack中的位置。
第三句:在heap中创建一个新对象{name: 'b'},将这个新对象赋值给b,则是把这个对象的地址放在b对应在stack中的位置。则b在stack中的值由原先的address:110,变为address:120.
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0