内存图与JS世界(待补充)

2021-02-22  本文已影响0人  Marshall3572

stack区顺序存放,heap区随机存放
非对象(数字,字符串,布尔)都存在Stark,对象(数组,函数)都存在Heap。
=号总是把右边的东西复制到左边(不存在什么传值和传地址)复制的对象一改之前被复制的也改,因为他们都是一块内存。

Window

window变量和window对象是两个东西,window变量是一个容器,存放window对象的地址。window对象是heap里边的一坨数据。

window内存图 window的三个属性 window抽象内存图

JS三座大山(this,原型,AJAX)

JS三座大山---原型

prototype是干什么用的?
打印出来看看
console.dir(window.Object.prototype)

每一个对象都有一个隐藏属性,指向原型(对象),这个隐藏属性封装了toString等等,方便调用,不用每次创建对象时都重写toString这些。

这个隐藏属性叫proto
prototype和proto的区别?
都存着原型的地址,只不过prototype挂在函数上,proto挂在每个新生成的对象上。

JS 引擎的功能有

  1. 编译 JS 代码为字节码或者机器码
  2. 优化字节码或者机器码
  3. 执行字节码或者机器码
  4. 垃圾回收

Object.prototype 保存了一个对象的地址,这个对象包含了所有普通对象的共有属性,叫做对象的原型
Array.prototype 保存了一个对象的地址,这个对象包含了是所有数组的共有属性,叫做数组的原型
Function.prototype 保存了一个对象的地址,这个对象包含了是所有函数的共有属性,叫做函数的原型
每个对象都有一个隐藏属性,用来保存其原型的地址,这个隐藏属性的名字叫做 proto

上一篇 下一篇

猜你喜欢

热点阅读