2

请原谅我缺乏关于网络技术和网络相关方面和术语的知识。这个问题的一个答案表明The DOM standards define interfaces that are implemented by the objects from the DOM object tree in the browser.

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

4

2 回答 2

2

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

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

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

于 2016-08-01T21:16:27.377 回答
-2

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

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

例子:

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 没有返回具有可以迭代位置的对象。

于 2016-08-01T18:09:48.550 回答