JavaScript高级程序设计笔记01 什么是JavaScript
什么是JavaScript
1995年问世。
最初在客户端处理某些基本的验证。
名字:Mocha -> LiveScript -> JavaScript
ECMAScript脚本语言标准:ECMA-262(TC39,第39技术委员会)
完整的的JavaScript包含:
- 核心ECMAScript
- 文档对象模型DOM
- 浏览器对象模型BOM
宿主环境提供ECMAScript的基准实现和与环境自身交互必需的扩展。
ECMA-262定义了什么:
语法 | 类型 | 语句 | 关键字 | 保留字 | 操作符 | 全局对象
版本更迭
第1版:本质上与JavaScript1.1相同,支持Unicode标准,对象与平台无关
第2版:一些编校
第3版(!!):更新了字符串处理、错误定义和数值输出。另外还增加了对正则表达式、新的控制语句、try/catch异常处理的支持,等
第4版(×):强类型变量、新语句和数据结构、真正的类和经典的继承,以及操作数据的新手段
第5版(3.1!!!):厘清第3版的歧义,增加对JSON的支持、方便继承和高级属性定义的方法、增加严格模式
第6版(2015.6!!!!):支持类、模块、迭代器、生成器、箭头函数、期约(Promise)、反射、代理和众多新的数据类型(Map、Set等)
第7版(2016.6):少量语法层面的增强,如Array.prototype.includes和指数操作符
第8版(2017.6):增加了异步函数(async/await)、SharedArrayBuffer及Atomics API,以及Object.values()/Object.entries()/Object.getOwnPropertyDescriptors()和字符串填充方法(?),明确支持对象字面量最后的逗号。
第9版(2018.6):异步迭代、剩余和扩展属性、一组新的正则表达式特性、Promise finally(),以及模板字面量修订
第10版(2019.6):增加了Array.prototype.flat()/flatMap()、String.prototype.trimStart()/trimEnd()、Object.fromEntries()方法,以及Symbol.prototype.description属性,明确定义了Function.prototype.toString()的返回值并固定了Array.prototype.sort()的顺序。解决了与JSON字符串兼容的问题,并定义了catch子句的可选绑定(?)
ECMAScript符合性:
必须满足的条件
- 支持ECMA-262中描述的所有“类型、值、对象、属性、函数,以及程序语法与语义”;
- 支持Unicode字符
浏览器支持
| 浏览器 | DOM Level | ECMAScript符合性 |
|---|---|---|
| IE5.5~8 | DOM Level1 | ES3 |
| IE9 | ES5(部分) | |
| IE10-11 | ES5 | |
| Edge12+ | ES6 | |
| Safari6~8 | ES5 | |
| Safari9+ | ES6 | |
| Chrome49+ | ES6 | |
| FireFox45+ | ES6 | |
| iOS Safari 9.2+ | ES6 |
DOM
一个应用编程接口(API),用于在HTML中使用扩展的XML。DOM将整个页面抽象为一组分层节点。
动态HTML:不刷新页面而修改页面外观和内容。
DOM级别
DOM Level1(1998):DOM Core和DOM HTML两个模块。目标:映射文档结构
DOM Core:提供一种映射XML文档,从而方便访问和操作文档任意部分的方式;DOM HTML扩展了Core并增加了特定于HTML的对象和方法。
DOM Level2:增加了对鼠标和用户界面事件、范围、遍历的支持,通过对象接口支持了CSS。DOM Core也被扩展以包含对XML命名空间的支持。
新增模块:
- DOM视图:描述追踪文档不同视图的接口。(如应用CSS样式前后的文档)
- DOM事件:描述事件及事件处理的接口
- DOM样式:描述处理元素CSS样式的接口
- DOM遍历和范围:描述遍历和操作DOM树的接口
DOM Level3:进一步扩展了DOM,增加了以统一的方式加载和保存文档的方法(DOM Load and Save的新模块中),还有验证文档的方法(DOM Validation)。DOM Core扩展以支持所有XML1.0的特性,包括XML Infoset、XPath和XML Base。
DOM4(DOM Living Standard):新增的内容包括替代Mutation Events的Mutation Observers。
L1+L2(部分)+L3(部分):Opera 9 | Safari2+ | iOS Safari 3.2+ | Chrome 1+ | FF 1+
其他DOM
基于XML的,增加了自己独有的DOM方法和接口:
- SVG(可伸缩矢量图,Scalable Vector Graphics)
- MathML(数学标记语言,Mathematics Markup Language)
- SMIL(同步多媒体集成语言,Synchronized Multimedia Integration Language)
BOM
可以操控浏览器显式页面之外的部分。
唯一一个没有相关标准的JavaScript实现。<——HTML5
主要针对浏览器窗口和子窗口,通常包括特定于浏览器的扩展:
- 弹出新浏览器窗口的能力(window.open)
- 移动、缩放和关闭浏览器窗口的能力
- navigator对象,提供关于浏览器的详尽信息
- location对象,提供浏览器加载页面的详尽信息
- screen对象,提供关于用户屏幕分辨率的详尽信息
- performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息
- 对cookie的支持
- 其他自定义对象,如XMLHttpRequest和IE的ActiveXObject
多数浏览器对JavaScript的支持,指的是实现ECMAScript和DOM的程度。
JavaScript高级程序设计笔记01 什么是JavaScript的更多相关文章
- javascript高级程序设计--笔记01
概述 JavaScript的实现包含三个部分: 1 核心(ECMAScript) 提供核心语言功能 2 文档对象模型(DOM) 一套提供了访问以及操作网页内容的API 3 浏览器对象模型( ...
- 阅读摘录《javascript 高级程序设计》01
前言: 因为工作需要,所以开始主攻前台JS方面的技术.在以前的工作中,使用过这门脚本语言.但是都是比较凌乱的,用到什么学什么,只是为了实现业务,而去使用. 不会考虑到代码优化,封装对象等.今次特意借了 ...
- javascript高级编程笔记01(基本概念)
1.在html中使用JavaScript 1. <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...
- JavaScript高级程序设计笔记(一)
---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...
- JavaScript高级程序设计笔记之面向对象
说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...
- Javascript高级程序设计——在HTML中使用Javascript
<script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该 ...
- javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记
1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...
- <javascript高级程序设计>笔记
1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...
- javaScript高级程序设计笔记 2
Undefinde Null Boolean Number String 基本类型 Object 引用类型 只有引用类型才能动态的添加属性 赋值基本类型和引用类型也不相同,复制的基本类型的 ...
随机推荐
- FPGA移位加三法
介绍 BCD码 BCD码的英文全称是Binary-Coded Decimal,简称BCD,按字面解释是二进制十进制代码,是一种二进制的数字编码形式. 常见的BCD码有8421BCD码,2421BCD ...
- http头部字段Origin和Access-Control-Allow-Origin解决请求跨域
Http协议中请求头和响应头携带了很多信息,其中 请求头 Origin,响应头 Access-Control-Allow-Origin 与跨域有关. 为了验证跨域,要将客户端和服务端分配在不同端口,这 ...
- 让nodejs开启服务更简单--express篇
上一篇文章说到,nodejs获取客户端请求需要我们自己去处理请求参数.请求方式等,而在express框架内部集成了很多好用的方法,我们不需要从0开始编写各种处理逻辑,这样可以极大提高我们的开发效率~ ...
- springboot jar thin
springboot jar thin springboot 应用 jar 瘦身.springboot jar 太大.jar与依赖包分离. 两种方法,第一种,spring-boot-thin-laun ...
- JS逆向实战21——某查查webpack密码加密
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 aHR0cHM6Ly ...
- 重要变更 | Hugging Face Hub 的 Git 操作不再支持使用密码验证
在 Hugging Face,我们一直致力于提升服务安全性,因此,我们将对通过 Git 与 Hugging Face Hub 交互时的认证方式进行更改.从 2023 年 10 月 1 日 开始,我们将 ...
- ShardingSphere实战
前言 本文主要从sharding最新版本5.1.2版本入手搭建,按主键ID和时间进行分表. 本文主要介绍搭建过程,有兴趣了解shardingsphere的同学可以先自行查阅相关资料. shardsph ...
- Vue vs React:你需要知道的一切
Vue 和 React 是创建 JavaScript 网络应用程序最常用的两种工具.但我们该如何在两者之间做出选择呢?在本篇 Vue 与 React 的对比中,我们将尝试找出答案.我们将回顾每种工具的 ...
- 一文弄懂TypeScript中的混合
1.前言 由于TypeScrip中的类不支持多继承,所以引入了混合(Mixin)的特性,可以间接实现继承的效果. 2.正文 // 声明一个汽车类Vehicle,它有drive方法 class Vehi ...
- day1项目配置
项目初始化 本项目使用vite进行构建,vite参考官网 pnpm包管理:performant npm,意味"高性能的npm".pnpm由npm/yarn衍生而来,解决了npmly ...