Javascript v8引擎和Web API

问题描述 投票:0回答:1

我一直在阅读Javascript的内部知识(在chrome浏览器的上下文中,我有一些问题似乎找不到适当的答案。

根据我的理解:

  • V8中包含核心Javascript(根据ECMA规范)发动机。

  • settimeout之类的功能由浏览器的Web API提供。

  • V8引擎包括一个调用堆栈和任何要被执行的被推入该堆栈。

  • 然后通过Web API调用非标准函数。

  • 这些完成时将被推送到回调队列。

  • 一旦堆栈为空,回调队列中的所有内容都会被推送通过事件循环进入堆栈。

我的问题是,当V8引擎解释Javascript代码时,如何知道某个特定功能来自Web API? Web API实际如何与引擎链接?

javascript node.js google-chrome v8
1个回答
0
投票

API像setTimeout()被添加到Javascript的global对象中。当JS引擎寻求解析符号时,它从本地范围开始,并向上延伸一系列范围。链的最末端是global范围。过去,浏览器环境中的全局作用域与window对象相同,但是随着class功能的出现,浏览器Javascript中的某些内容现在在全局作用域中可用,而不是在window对象。

因此,将在浏览器中Javascript的顶级添加的任何API(例如setTimeout())都添加到global对象。全局对象

© www.soinside.com 2019 - 2024. All rights reserved.