浏览器底层机制:ECStack(栈内存),Heap(堆内存),EC/VO/AO/GO

我们编写的JS代码都是需要在一个环境中运行的:比如

  • 1.浏览器(引擎):例如webkit,gecko,Trident, blink
  • 2.node*(基于V8渲染js)
  • 3.webview(v8引擎)

1.JS之所以能够在浏览器中运行,是因为浏览器给JS提供了执行的环境 => 栈内存

  • 1.1栈内存(ECStack(Execution Context Stack):执行环境栈):浏览器在计算机内存中分配一块内存,专门用来供代码执行(也就是提供代码执行的环境)
  • 1.2全局对象(GO(Globle Object)):浏览器把内置的一些属性和方法放一个单独的内存中,堆内存(Heap),浏览器端会让window指向GO即:window =GO
  • 1.3堆内存(Heap):存放东西(属性和方法(例:isNaN:function...))
  • 1.4任何开辟的内存都有一个16进制的内存地址,方便后期找到这个内存
  • 1.5执行上下文EC(Execution Context):在编程语言中,代码执行中,为了区分全局和函数执行所处的不同的作用域(目的是为了区分每个词法作用域下代码的独立性)=>EC(Execution Content)执行上下文:代码执行所在的词 法作用域,或者代码执行所处的范围
  • 1.6VO(variable Object)->AO(Active Object)变量对象:在每一个上下文代码执行的时候,都可能会创建变量,所在每一个上下文中(不论是全局还是私有),都会有一个存储变量的空间:VO(variable Object)->AO(Active Object)变量对象:存放当前上下文中变量的,只不过全局上下文成为VO(G),私有上下文中称为AO(xx),但是也是变量对象

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值