Promise属于浏览器API还是JavaScript原生内置对象?
Promise的归属分类解答
直接给明确结论:Promise是JavaScript语言本身的内置组成部分,由JavaScript引擎原生实现,不属于浏览器Web API范畴。
具体判断依据和说明如下:
- 区分Web API和JS原生内置对象的核心标准是规范来源
- 你提到的
Document、setTimeout属于Web API,由W3C/WHATWG的浏览器规范定义,只在包含浏览器/宿主扩展能力的运行时中提供,纯JavaScript引擎本身不内置这些能力 - 而
Array、Date、Promise都属于ECMA-262(JavaScript官方语言标准)明确定义的内置对象,所有符合ECMAScript标准的JS引擎都必须原生实现该对象,和宿主环境无关
- 你提到的
- 你可以很容易验证这个结论:在没有浏览器Web API的Node.js环境中,依然可以直接调用Promise的所有能力,这也能直接证明它不是浏览器专属的API
- 有个常见的认知误区需要注意:很多和异步相关的Web API(比如
fetch)会返回Promise实例,这只是Web API调用了JS内置的Promise能力,不代表Promise本身属于Web API。
内容的提问来源于stack exchange,提问作者Kevo
相关产品推荐
相关产品推荐

