少侠学代码系列(二)->JS实现
少侠:小子,休息好了没,赶紧的
帅气的我:好了好了,嚷什么
少侠:(拔刀)嗯?
帅气的我:少侠,淡定淡定,我们来看秘籍吧,刚刚我们说了JS实现是由三个部分组成的
核心(ECMAScript),文档对象模型(DOM),浏览器对象模型(BOM)
我们挨着看一下这三个的含义
ECMAScript:由ECMA-262定义的ECMAScript定义的ECMAScript和Web浏览器没有关系,实际上,这门语言并不包含输入输出定义,ECMA-262定义的只是这门语言的基础,而在此基础上可以构建出更完善的脚本语言,我们常见的web浏览器只是ECMAScript实现可能的宿主环境之一,宿主环境不仅提供基本的ECMAScript实现,同时也会提供该语言的扩展,以便语言与环境间对接交换,而这些扩展---如DOM,则利用ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作,其他的宿主环境包括Node和Adobe Flash,既然ECMA-262没有参照web浏览器,那他规定了什么呢,大致来说,它规定了以下部分:
语法
类型
语句
关键字
保留字
操作符
对象
文档对象模型(DOM):是针对XML但经过扩展用于HTML的应用编辑程序接口(API),DOM把整个页面映射成一个多层节点结构,HTML或者XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
为什么使用DOM?在IE4和Netscape Navigator 4分别支持不同形式DHTML的基础上,开发人员首次无需重新加载网页就可以修改外观和内容了,但是由于Netscape和微软在开发DHTML方面各持己见,过去那个只需要编写一份HTML页面就可以在所有浏览器运行的时代结束了,为了解决两强割据的局面,负责指定web通信标准的W3C(万维网联盟)开始着手规划DOM
DOM级别:
DOM1级:DOM1级于1998年10月成为W3C的推荐标准,DOM1级由DOM核心(DOM Core)和DOM HTML组成,DOM核心规定的是如何映射基于XML的文档结构,以便简化对文档任意部分的访问和造作,DOM HTML模块则在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法(注意:DOM并不是只针对JS,很多别的语言也实现了DOM)
DOM2级:DOM2级在原有DOM的基础上又添加了鼠标和用户界面事件,范围,遍历等细分模块,而且通过对象接口增加了对CSS的支持,DOM1级中的DOM核心模块也经过扩展开始支持XML命名空间,DOM2级引入了一下新模块:
DOM视图:定义了跟踪不同文档视图的接口
DOM事件:定义了事件和事件处理的接口
DOM样式:定义了基于CSS为元素应用样式的接口
DOM遍历和范围:定义了遍历和操作文档树的接口
DOM3级:进一步扩展了DOM,引入了统一方法加载和保存文档的方法---在DOM加载和保存模块中定义,新增了验证文档的方法--在DOM验证模块中定义,扩展了核心,开始支持XML1.0规范
其他DOM标准:除了DOM核心和DOM HTML接口外,另外几种语言也发布了针对自己的DOM标准,下面列出的语言都是基于XML的,每种语言的DOM标准都添加了与特定语言相关的新方法和新接口:
SVG(可伸缩矢量图)
MathML(数学标记语言)
SMIL(同比多媒体集成语言)
还有一些浏览器也开发了自己的DOM实现,例如Mozilla的XUL(用户界面语言),但是只有上面列出的几种语言是W3C推荐标准
浏览器对象模型(BOM):BOM只处理浏览器窗口和框架,但人们习惯上也把所有针对浏览器的JavaScript扩展算做BOM的一部分,下面列一下这些扩展
弹出新浏览器窗口的功能
移动,缩放,和关闭浏览器窗口的功能
提供浏览器详细信息的navigator对象
提供浏览器锁加载页面的详细信息的location对象
提供用户显示器分辨率详细信息的screen对象
对cookie的支持
像XMLHttpRequest和IE的ActiveXObject这样自定义对象
帅气的我:少侠,我困了,能睡一会吗
少侠:真是懒驴上磨屎尿多,去睡吧,准了
帅气的我:好嘞
少侠学代码系列(二)->JS实现的更多相关文章
- 少侠学代码系列(一)->JS起源
少侠:喂,有人吗?赶紧出来接客了,有没有人啊 帅气的我:来了来了,少侠有何吩咐? 少侠:把你们店里的秘籍呈上来我要学JS 帅气的我:少侠,别这样,我们秘籍是不外传的,祖上传下来的规矩,传人妖不传男女. ...
- [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...
- 辛巴学院-Unity-剑英陪你零基础学c#系列(二)顺序
这不是草稿 辛巴学院:正大光明的不务正业. 上一次的教程写出来之后,反馈还是挺多的,有很多都做了修改,也有一些让人崩溃,不得不说上几句.有些人有些很奇怪的地方,你写篇东西,被看了以后不说他感觉怎么 ...
- 一步一步学EF系列二【Fluent API的方式来处理实体与数据表之间的映射关系】
EF里面的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面,还有一个就是F ...
- D&F学数据结构系列——二叉堆
二叉堆(binary heap) 二叉堆数据结构是一种数组对象,它可以被视为一棵完全二叉树.同二叉查找树一样,堆也有两个性质,即结构性和堆序性.对于数组中任意位置i上的元素,其左儿子在位置2i上,右儿 ...
- [Python] 文科生零基础学编程系列三——数据运算符的基本类别
上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...
- 从零开始学 Web 之 Vue.js(二)过滤器,按键修饰符,自定义指令
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- .net基础学java系列(二)IDE 之 插件
上一篇文章.net基础学java系列(二)IDE "扎实的基础"+"宽广的视野",基本可以帮我们摆脱码畜.码奴.码农的命运! IT领袖:IT大哥:IT精英:IT ...
- .net基础学java系列(二)IDE
上一篇文章.net基础学java系列(一)视野 废话: "视野"这篇文章,管理员说它比较空洞!也许初学者看不懂表格中的大部分内容!多年的neter估计也有很多不知道的! 有.net ...
随机推荐
- 【.NET Core微服务实战-统一身份认证】开篇及目录索引
简介 学习.NETCORE也有1年多时间了,发现.NETCORE项目实战系列教程很少,都是介绍开源项目或基础教程,对于那些观望的朋友不能形成很好的学习思路,遇到问题怕无法得到解决而不敢再实际项目中 ...
- SUSE12Sp3-Nginx安装
1.安装pcre(nginx 依赖) 把安装包pcre-8.12.tar.gz复制到服务器指定目录 tar -zxvf pcre-8.12.tar.gz # 解压 cd pcre-8.12 #进入目录 ...
- [Swift]LeetCode556. 下一个更大元素 III | Next Greater Element III
Given a positive 32-bit integer n, you need to find the smallest 32-bit integer which has exactly th ...
- the python challenge闯关记录(0-8)
0 第零关 2**38 = 274877906944 下一关的url:http://www.pythonchallenge.com/pc/def/274877906944.html 1 第一关 移位计 ...
- 分布式事务之如何基于RocketMQ的事务消息特性实现分布式系统的最终一致性?
导读 在之前的文章中我们介绍了如何基于RocketMQ搭建生产级消息集群,以及2PC.3PC和TCC等与分布式事务相关的基本概念(没有读过的读者详见
- 【T-SQL】系列文章全文目录(2017-06-26更新)
本系列[T-SQL]主要是针对T-SQL的总结. SQL基础 [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]0 ...
- Python内置函数(27)——hasattr
英文文档: hasattr(object, name) The arguments are an object and a string. The result is True if the stri ...
- BBS论坛(二十六)
26.发布帖子前台代码逻辑完成 (1)front/hooks.py from .views import bp from flask import session,g from .models imp ...
- 带着新人学springboot的应用12(springboot+Dubbo+Zookeeper 下)
上半节已经下载好了Zookeeper,以及新建了两个应用provider和consumer,这一节我们就结合dubbo来测试一下分布式可不可以用. 现在就来简单用一下,注意:这里只是涉及最简单的部分, ...
- 总结Unity 初学者容易犯的编译与运行时错误
总结Unity 初学者容易犯的编译与运行时错误 1: Untiy 出现编译错误: NewLine In Constant 解决方法: 方法一:如果报错脚本比较少量的话,可能用记事本打开报错的脚 ...