我如何知道 V8 中有哪些功能?

How do I know which features are in V8?

我是一名 Web 开发人员,所以我访问任何 Javascript 文档的第一站通常是 MDN。例如,现在我想使用 DOMParser,它在 Chrome.

中得到支持

但是,当我 运行 JavaScript 通过 V8(Node 或 rubyracer)时,找不到 DOMParser。

~/$ node
Welcome to Node.js v12.4.0.
Type ".help" for more information.
> DOMParser;
Thrown:
ReferenceError: DOMParser is not defined
>

是否有 JavaScript 的子集只能在浏览器中使用?我如何找出 V8 支持哪些功能?

大多数 Web 开发人员认为在 Web 开发中使用的 javascript 中的任何可访问对象、原型和方法都是纯粹的 javascript 功能,但这种想法实际上是不正确的。 Web 开发中的一些对象,如 XMLHttpRequest、DOMParser 等是文档对象模型 (DOM) 的一部分,我们只能在浏览器平台上访问它们。

如果您使用的是 Nodejs 并且想要解析 html 文本,我认为 Jsdom 库可以满足您的要求,如下所示:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
console.log(dom.window.document.querySelector("p").textContent);

Online Execution

希望对您有所帮助

官方明确的答案是:当它是 ECMAScript specification 的一部分时,它就是 ECMAScript 引擎(V8、SpiderMonkey、JSC)的 implemented/supported。您在 MDN 中找到的所有其他内容(例如,任何 DOM 和网络相关的内容)都是特定于浏览器环境的,并由相应的浏览器实现。

为了便于阅读,MDN 的 JavaScript reference 似乎也保持了这种分离。