JavaScript对象的底层数据结构是什么?

405 阅读1分钟

java

java将内存分成两种形式,一种是堆内存,另一种是栈内存。java的基本数据类型在栈分配空间,对象在堆分配空间。

js

  • js基本数据类型存储在栈中,每种类型的数据占用内存空间的大小是确定的,并由系统自动分配和释放。 结合下图进行理解: image.png 在栈内存中的数据发生复制行为时,系统会自动为新的变量分配一个新值,最后这些变量都是相互独立的。
  • js引用数据类型存储在栈和堆中。具体来说就是引用数据类型的指针存储在栈中,当我们访问一个引用数据类型时,首先从栈中获取对象的地址指针,然后通过地址指针去堆中找到对应的数据。 结合下图进行理解: image.png 实际上复制引用类型的一个地址指针,指向同一个值,在堆内存中访问到的具体对象实际上是同一个。

总结

异同
栈内存堆内存
存储基础数据类型存储引用数据类型
按值访问按引用访问
存储的值大小固定存储的值大小不定,可动态调整
由系统自动分配内存空间由代码进行指定分配
空间小,运行效率高空间大,运行效率相对比较低
先进后出,后进先出无序存储,可根据引用直接获取