【问题标题】:Is the DOM API an object-oriented API?DOM API 是面向对象的 API 吗?
【发布时间】:2016-12-06 21:47:57
【问题描述】:

请原谅我缺乏关于网络技术和网络相关方面和术语的知识。 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 吗?

【问题讨论】:

  • “面向对象的 API”是什么意思?它可能会以这种方式实现,但这并不意味着您可以访问继承等。
  • @4castle,一个我可以用来用面向对象语言编程的 API。
  • 是的,我想它是面向对象的。像 JavaScript 这样的语言位于完成大部分工作的本机代码之上。您不能在 JavaScript 中创建“接口”。没有编译器。

标签: html oop dom web web-technologies


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 它没有返回一个带有位置的数组,我怀疑这是 OP 想知道的。
    • 澄清:JavaScript 中的一切都是对象,除了基本类型(如数字、布尔值、字符串、未定义和空值)
    • 为什么这么多人认为“javascript中的一切都是对象”?七种类型中只有一种是对象!所有其他值都不是对象!关键字不是对象!括号不是对象!以此类推。
    猜你喜欢
    • 1970-01-01
    • 2011-03-26
    • 2010-09-11
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多