DOM对象是用什么语言编写的?
html解释器把html解析成dom树,这个dom树是各种对象的代码、而且是js语言写的代码,并以文件的形式存在吗?
还是直接被解释器解析成内存中的数据结构?
猜测一:如果会解析成文件,假设一个浏览器的渲染引擎、html解释器和js引擎都是c写的,那么这个dom树存在的实体文件,是用js语言写的,还是c语言写的呢?
猜测二:如果经过解析后得到的dom树就不会以文件形式产生,只是被解析成内存中的数据结构。那么当js引擎执行js语句,比如var a = document.querySelctor('div'),js引擎可以直接在内存中获取到代表dom树中的某个元素的数据嘛。就是指,js引擎构建工作环境时,不需要像加载其它库文件,比如加载console库、加载内置对象的库文件,不需要加载dom树所在的文件,可以直接获得并修改dom树嘛
我是初学js,只掌握了少量的知识点,不重视怎么写代码怎么使用js,反而企图利用掌握的少量知识点靠猜测串联出js的工作过程。。涉及我问题知识点的书我一方面找不到,另一方面可能需要较大的代码量我才能看懂;但另一方面我会控制不住幻想出这些问题来,并试图知道答案,妨碍我看视频学习写js。为什么会这样。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题确实不是很清晰,但是以我理解的来说一下吧。
首先搞清楚DOM和HTML还有JavaScript的关系:
1.DOM只是一个API,它是一种标准。以下是W3C对DOM的定义:
“一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地访问和修改文档地内容、结构和样式”
2.HTML则是一种标记语言,它可以来定义我们DOM的结构、排版等。
3.JavaScript则与DOM本身是没有什么关系的,DOM并不是JavaScript规范中的一部分,只是浏览器提供了DOM这个API,使得其他语言可以通过这个API去操作DOM。所以浏览器会将DOM转换成JavaScript对象,通过接口的形式提供给JavaScript使用。
那么我们浏览器做的事情,就是将HTML解析成DOM树,最终渲染出来一种类似于word文档的页面(只是比喻,如果没有任何样式的话)。
接下来谈谈你的疑问:
DOM树是以什么形式存在的?浏览器解析后是将其以文件形式放在硬盘中还是直接以二进制形式放在内存中?
答:首先,DOM的结构其实已经在我们编写.html文件的时候就定义好了,浏览器只是要将我们定义好的结构去解析出来,最终渲染在页面上。那么你说渲染出来的这个页面是放在哪的呢?不就是放在硬盘中的HTML文件吗?而页面渲染的过程中,一定会有CPU和内存操作,具体就要去看浏览器引擎是怎么实现的了。
其次,DOM树我觉得更应该理解为一个抽象的概念,既然它是树,那么它应该就只是一种逻辑结构,和我们说的二叉树等等一样,并不是一个物理结构。我们的浏览器引擎已经通过程序语言去写好了对这种结构的各种解析转换以及操作方法,最终让它成为计算机能识别的东西,并在屏幕上展示出来。不管浏览器引擎背后是用C还是其他语言,本质上都是去生成并操作DOM树这种结构,那它自然而然就是以二进制的方式放在内存当中才能运行。
不过这和放在硬盘中的HTML文件定义的DOM结构并不冲突,因为任何硬盘中的文件要想通过程序运行起来,必定需要经过内存,内存是与CPU通信的桥梁,计算机中所有程序的运行都是在内存中进行的。
所以最终的结论,DOM对象或者说DOM树,是一种通过浏览器引擎解析HTML文件后形成的逻辑结构,最终都必须放在内存中并经过CPU及GPU运算才能渲染出来。
以上回答纯属个人理解,如有指正或不同观点,请指教。