【问题标题】:What's the difference between Node/Element/Object?节点/元素/对象有什么区别?
【发布时间】:2015-10-06 15:44:26
【问题描述】:

据说,在许多地方,它们都是同一个东西。但是当他们开始解释时,他们以不同的方式指代每一个,却没有明确解释有什么区别?

请尽量具体一点,因为我还在学习 JS,还不是很擅长。 :)

【问题讨论】:

  • 感谢链接,不幸的是我确实看到了这篇文章,但对我来说还不够清楚。我不知道是我愚蠢还是初学者不清楚,但无论如何你有一个更简单的答案吗? @fubbe
  • 要非常快。所有元素都是节点。但并非所有节点都是元素。因为元素从节点延伸。一个对象是一个未排序的键值对列表,它可以保存不同的数据类型,如原语或引用......
  • 非常相似的问题/答案在这里:Difference between Node object and Element object?

标签: javascript


【解决方案1】:

Node 是一个接口,许多 DOM 类型从该接口继承,并允许对这些不同的类型进行类似的处理(或测试)。参考:https://developer.mozilla.org/en-US/docs/Web/API/Node

Element 接口表示 Document 的一个对象。该接口描述了所有类型元素共有的方法和属性。特定行为在从 Element 继承但添加额外功能的接口中描述。例如,HTMLElement 接口是 HTML 元素的基础接口,而 SVGElement 接口是所有 SVG 元素的基础。参考:https://developer.mozilla.org/en-US/docs/Web/API/Element

对象可以代表任何事物。对象具有描述它们的属性和可以对它们执行的操作的方法。

把它放在一起:

您可以像这样在网页中创建 DOM 节点:

var node=document.createTextNode('A Node');

然后你可以创建一个段落元素:

var p=document.createElement('p');

将节点附加到段落:

p.appendChild(node);

您也可以将节点和元素引用为对象:

p.className='description';  // set the class property of the paragraph to 'description';

p.setAttribute('data-item', '8');  // add an attribute named data-item with a value of 8

【讨论】:

  • 很好的解释。为了进一步说明,NodeElement 是 Web(或 HTML?)域概念,Object 是语言(JaveScript)域概念.
  • 是的,这确实是一个很好的解释,谢谢@user2182349!
  • @WonjungKim :所以只有对象与 JS 直接相关,而其他两个实际上与 HTML 相关?也不知道 :)
  • @IslamElshobokshy:对。在 Node.js 中,没有节点或元素。
【解决方案2】:

所有元素都是节点,但节点不是所有元素,元素和节点都是对象类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2018-09-13
    相关资源
    最近更新 更多