Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的节点接口是对象吗?_Javascript_Object_Dom_Interface_Nodes - Fatal编程技术网

Javascript中的节点接口是对象吗?

Javascript中的节点接口是对象吗?,javascript,object,dom,interface,nodes,Javascript,Object,Dom,Interface,Nodes,我是一个网络开发的新手。我很难理解DOM接口和对象之间的关系(面向对象编程概念)。有人能帮我得到下面问题的明确答案吗 1) Javascript中的节点接口是否表示具有中所述属性和方法的类 2) 如果我没有弄错的话,所有的DOM接口,比如Document和Elements都是节点-->Document节点、Element节点、Text节点……这是否意味着所有这些DOM接口都是Node类的子类?所有的HTML元素和属性,比如(p,div,a,img,…)都是节点对象和DOM接口对象——它们属于哪个

我是一个网络开发的新手。我很难理解DOM接口和对象之间的关系(面向对象编程概念)。有人能帮我得到下面问题的明确答案吗

1) Javascript中的节点接口是否表示具有中所述属性和方法的类

2) 如果我没有弄错的话,所有的DOM接口,比如Document和Elements都是节点-->Document节点、Element节点、Text节点……这是否意味着所有这些DOM接口都是Node类的子类?所有的HTML元素和属性,比如(p,div,a,img,…)都是节点对象和DOM接口对象——它们属于哪个

更新#1:


我正试图从Codecademy、W3Schools和许多其他在线资源网站学习网络编程。然而,即使对Javascript和面向对象编程有了一定的了解,我仍然无法理解和连接DOM接口组件在面向对象编程(如类、对象、属性和方法)方面是如何相互工作的。。。我找不到一个资源来真正弥合学习Javascript编程语言和实际使用该语言及其面向对象方法(当然是通过DOM接口)之间的差距

对于1,是的,但是要正确使用术语。类是javascript中的对象,它们只是称为类,而不是“对象类”

对于2,也是这样,但它们不直接实现
节点
接口。所有不同类型的节点都继承
HTMLElement
,后者从继承
节点
接口。您只需查找继承链:

document.createElement('p').__proto__.__proto__ == HTMLElement.prototype
HTMLElement.prototype.__proto__ == Element.prototype
Element.prototype.__proto__ == Node.prototype

首先要了解的是:这些东西是web浏览器暴露于JavaScript的本机环境的一部分。它们不是JavaScript编程语言的一部分。当您在chrome中使用Inspect元素时,最右侧的“属性”选项卡将显示实例链,从own到specific tagName构造函数,到HtmleElement,再到Element,从节点到事件目标再到对象……我认为您的问题是由您实际试图解决的问题和一些关于javascript中对象层次结构如何工作的假设所激发的。因为我不确定你的假设是否正确,我建议你描述一下你想要解决的实际问题,这样我们才能确保我们为你指引了正确的方向。向任何内置DOM对象原型添加方法很少被认为是一种好的做法。谢谢您的回复,我已经按照您所说的编辑了术语。在您的回答中,“但它们不直接实现节点接口”部分意味着,每当我在“p”元素节点上实现一个节点方法时,该方法实际上会从HtmleElement接口(类)->元素接口(类)->节点接口(类)上游遍历,以“激活”节点接口(类)中所述方法的代码在我的“p”上。正确吗?否,如果向
p
对象添加方法,它不会向上遍历,而是向下遍历。但是如果您在
节点上实现它,它将传播到
p
。这就是面向对象编程的全部内容。如果你感兴趣的话,可以看看javascript的原型继承性。我为我糟糕的措辞感到抱歉。我所说的“implement”不是向“p”中“添加”一个新方法,而是实际使用内置的节点方法,例如“p”上的“.appendChild()”。在这种情况下,“.appendChild()”将向上向右移动?是的,如果javascript在对象上找不到方法,它将沿着原型链向上移动,直到
对象