一个关于DOM的小小思考
在学习过程中碰见这样一个方法(原生JavaScript可使用的方法):
document.querySelector('div').innerHTML=`
<h2>编号:${resp.id} </h2>
<h2>标题:${resp.title}</h2>
` `
这个方法提醒了我,我想知道document自带的所有方法,于是我查看了MDN:
https://developer.mozilla.org/zh-CN/docs/Web/API/Document
然后抱着了解一下web api的心,点开了web api接口参考
https://developer.mozilla.org/zh-CN/docs/Web/API
首先我们看这个网页的结构
- 标题:web api 接口参考
- 规范
- 接口
结果我发现,dom被列在规范中,而document被列在接口中
为什么这个网站把dom归为规范呢?我们都知道dom是文档对象模型,文档对象模型到底是什么?为什么document被称之为接口?
dom全称为document obj model,维基百科定义:“dom是W3C组织推荐的处理可扩展置标语言的标准编程接口。”
我们知道浏览器得到页面数据之后,首先要根据HTML创建dom树,然后根据css得到带style的dom树,通过渲染树计算布局,最后渲染
创建dom树的过程,我们还可以称之为 “把html文档处理成树状的对象模型” 这里我们咬文嚼字一番,品一品:
什么是飞机模型,什么是对象模型?飞机模型是对飞机进行简化得到的实体,对象模型在这里是指的就是html简化后得到的实体,而这个实体就是树状对象,这个对象是C++对象,并非js对象
DOM是C++对象,DOM对象是js对象
DOM是C++的概念,但是DOM对象是js的概念,DOM对象是一种特殊的js对象,js引擎给开发者提供了api,可以操作通过js中的DOM对象,来修改底层的DOM
这是MDN对dom介绍中的一个部分,也就是说dom并不需要我们来访问(是给浏览器内部的内容用的),像getelementbyid等方法,直接获取的就是dom对象
jQuery对象是对dom对象的封装(对一个js对象的封装),jQuery的选择器是css选择器,css选择器返回的是dom对象,前面的$符,代表工厂方法,把dom对象转化成jQuery对象
//这里我愿意把a当作dom对象的引用,你可以试着console.log(a)一下
var a=document.getElementById("wocao");
之前的博客只是感觉,dom略微奇怪,然后进行了很多猜想,今天问了一些有经验的巨巨,把这里补上了,除了有点啰嗦应该没太大问题,我还没有深入了解浏览器内部实现的打算,所以不在深究了
最后再放一张红宝书中的图
---割---
一个关于DOM的小小思考的更多相关文章
- 如何实现一个 Virtual DOM 及源码分析
如何实现一个 Virtual DOM 及源码分析 Virtual DOM算法 web页面有一个对应的DOM树,在传统开发页面时,每次页面需要被更新时,都需要手动操作DOM来进行更新,但是我们知道DOM ...
- 手动实现一个虚拟DOM算法
发现一个好文:<深度剖析:如何实现一个 Virtual DOM 算法> 源码 文章写得非常详细,仔细看了一遍代码,加了一些注释.其实还有有一些地方看的不是很懂(毕竟我菜qaq 先码 有时间 ...
- 一个 lambda 表达式引起的思考
一个 lambda表达式 引起的思考 fun = [lambda x: x*i for i in range(4)] for item in fun: print(item(1)) 全文都是抄来 ...
- 如何快速实现一个虚拟 DOM 系统
虚拟 DOM 是目前主流前端框架的技术核心之一,本文阐述如何实现一个简单的虚拟 DOM 系统. 为什么需要虚拟 DOM? 虚拟 DOM 就是一棵由虚拟节点组成的树,这棵树展现了真实 DOM 的结构.这 ...
- 手撸一个虚拟DOM,不错
大家好,我是半夏,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注 点赞 加我微信:frontendpicker,一起学习交流前端,成为更优秀的工程师-关注公众号:搞前端的半夏,了解更多前端知 ...
- 深度剖析:如何实现一个 Virtual DOM 算法
本文转载自:https://github.com/livoras/blog/issues/13 目录: 1 前言 2 对前端应用状态管理思考 3 Virtual DOM 算法 4 算法实现 4.1 步 ...
- 实现一个 Virtual DOM 算法
1 前言 本文会在教你怎么用 300~400 行代码实现一个基本的 Virtual DOM 算法,并且尝试尽量把 Virtual DOM 的算法思路阐述清楚.希望在阅读本文后,能让你深入理解 Virt ...
- 由项目中一个hash2int函数引发的思考
hash2int /** * 计算一个字符串的md5折算成int返回 * @param type $str * @return type */ function hash2int($str) { $m ...
- MVC系列——一个异常消息传递引发的思考
前言:最近在某个项目里面遇到一个有点纠结的小问题,经过半天时间的思索和尝试,问题得到解决.在此记录一下解决的过程,以及解决问题的过程中对.net里面MVC异常处理的思考.都是些老生常谈的问题,不多说, ...
- 一个python问题引发的思考
问题: pyqt5下开发的时候,遇到了一个这样的问题.Traceback (most recent call last):File “test.py”, line 3, in from PyQt5.Q ...
随机推荐
- java学习之注解
0x00前言 1.注解是什么: (1)可以叫做注释类型,注解是一种引用数据类型,编译后也是生成class文件 (2)提供信息给编译器: 编译器可以利用注解来探测错误和警告信息 比如 @Override ...
- 如何查看mysql数据目录位置
mysql> show global variables like "%datadir%"; +---------------+-----------------+ | Va ...
- qt quick工程升级,qmake工程升级至cmake
升级原因 由于音视频工作需要,qt6比qt5的video相关更看重效率. 升级中遇到的问题 在开发的过程中,为了更快速的进行开发,对业务其他不需要代码运行效率的地方使用qml+js的方式进行编写.在升 ...
- JavaWeb实战:基础CRUD+批量删除+分页+条件
技术栈及相关参考资料: MyBatis基础 Servlet基础 ServletRequest和ServletResponse MVC模式和三层架构 AJAX基础+Axios基础 Vue前端框架 Ele ...
- 关于pip3 ImportError: cannot import name 'main'的报错的原因及解决办法
这个问题的出现大多数都是因为你用错误的方法去升级pip3导致的 先来说一下正确的升级方法: python3 -m pip install --upgrade pip 我发现升级后版本变为了 19.x, ...
- [HNCTF]Web详解_原创
WEB Challenge__rce 根据给出的源代码来看典型的命令执行但是正则匹配掉说有的字母只留下数字和少量字符串. 根据大佬给出的思路使用自增绕过 <?php error_reportin ...
- day17 MySQL的安装 & 数据库基本语法——增删改查
day17 MySQL 登录数据库 mysql -h localhost -P 3307 -u root -p 查看所有数据库 show databases; 退出数据库 exit; //现有表格 u ...
- 数电第二周总结_by_yc
数电第二周总结_CC 重点: 模块实例化.仿真测试.数值表示.参数.表达式. 模块实例化端口连接方法: A.顺序端口连接:需严格按照模块定义时的顺序 B.明明端口连接:对端口信号顺序不做要求 Ex-1 ...
- 2.6:Python数据存取-文件、文件夹及目录、数据库
一.Python文件读写 1.文件的打开模式 <class '_io.TextIOWrapper'>和<class '_io.BufferedReader'>.python使用 ...
- 【每日一题】【第n个 n-->0】19./NC53 【删除】链表的倒数第 N 个结点-211123/220127
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 答案: import java.util.*; /* * public class ListNode { * int val; * ...