我理解 v8 是 js 的解释器,相当于说给 v8 输入一串符合 js 语法的字符串,然后它就能进行解释。对于输入的那串字符串可能后边会生成语法树或者中间代码之类的,如果在语法树或者中间代码中碰到类似 setTimetout,XHLHttpRequest dom 事件等不属于 v8 原生支持的方法,就把这些东西抛给对应的 定时器线程,IO线程 等。
所以我想问下,对于 setTimeout 或者 nodejs 中的 nextTick 之类的这种不属于 v8 原生的东西,v8 是怎么知道要把对应的方法抛给对应的线程呢?或者说,浏览器这个环境或者 nodejs 这个环境,是怎么样让 v8 感知到 某个 Api 是我这个执行环境或者说宿主注入给你 v8 的,是 v8 引擎提供了什么用于拓展的接口么?