DOM API 是面向对象的 API 吗?

Is the DOM API an object-oriented API?

请原谅我对网络技术和网络相关方面和术语的了解不足。 this 问题的一个答案指出 The DOM standards define interfaces that are implemented by the objects from the DOM object tree in the browser.

我真正想知道的是,这里的 interfaceimplementation objects 等概念与我们在面向对象中熟悉的概念相同吗?编程?也就是说,DOM API 是面向对象的 API?

JS中的一切都是对象,所以你的问题的真正答案是肯定的。但我认为您要问的是,当您调用 DOM API 时,通常会从 DOM API 获得什么响应,而该答案通常是 HTML 元素作为字符串。那是因为 DOM 只是脚本与网页连接的一种方式。

它大部分时间输出 HTML 元素,您可以很容易地测试它 - 只需在您必须测试的某些 HTML 元素上使用 console.log(whatever);

示例:

var newOne = document.getElementById('orange-text');
console.log(newOne);

来自 DOM API 的回复(通常只是您在 HTML 中的回复):

<p id="orange-text"">This text has an orange background because of a comparison operator</p>

现在尝试输出相同的变量,将其视为调用位置零的数组变量:

var newOne = document.getElementById('orange-text')[0];
console.log(newOne);

响应将是: undefined

答案未定义,因为 DOM 未返回具有可迭代位置的对象。

任何状态和方法可以在数据结构上共存的语言都是面向对象的。接口、类 和静态类型 OO 语言共有的其他特性并不是 OO 语言的组成部分。此外,您可能没有 JS 中的 interface 功能,但从概念上讲,接口只是对象必须履行的契约,因此没有什么可以阻止在 JS 中记录此类接口。

DOM API 绝对是OO。实际上,DOM 代表文档 对象 模型。换句话说,DOM 是针对 HTML 和 XML 文档的表示和交互问题的面向对象解决方案。

然而,这并不意味着它尊重 SOLID 原则等基本的 OO 原则。