什么是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的更多相关文章

  1. javascript高级程序设计--笔记01

    概述 JavaScript的实现包含三个部分: 1  核心(ECMAScript)   提供核心语言功能 2  文档对象模型(DOM)  一套提供了访问以及操作网页内容的API 3  浏览器对象模型( ...

  2. 阅读摘录《javascript 高级程序设计》01

    前言: 因为工作需要,所以开始主攻前台JS方面的技术.在以前的工作中,使用过这门脚本语言.但是都是比较凌乱的,用到什么学什么,只是为了实现业务,而去使用. 不会考虑到代码优化,封装对象等.今次特意借了 ...

  3. javascript高级编程笔记01(基本概念)

    1.在html中使用JavaScript 1.  <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...

  4. JavaScript高级程序设计笔记(一)

    ---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...

  5. JavaScript高级程序设计笔记之面向对象

    说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...

  6. Javascript高级程序设计——在HTML中使用Javascript

    <script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该 ...

  7. javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记

    1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...

  8. JavaScript高级程序设计笔记 事件冒泡和事件捕获

    1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...

  9. <javascript高级程序设计>笔记

    1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...

  10. javaScript高级程序设计笔记 2

    Undefinde Null Boolean Number String    基本类型 Object    引用类型 只有引用类型才能动态的添加属性 赋值基本类型和引用类型也不相同,复制的基本类型的 ...

随机推荐

  1. MariaDB start 报错:mysql-bin.index' not found (Errcode: 2) (Errcode: 13)

    问题是修改配置log-bin=/data/mysql/binlog/mysql-bin后出现的. 报错:Errcode: 2 mkdir -p /data/mysql/binlog ## 和正常的DB ...

  2. 【go语言】2.2.1 数组和切片

    数组和切片是 Go 语言中常用的数据结构,它们都可以存储多个同类型的元素. 数组 数组是具有固定长度的数据类型,它的长度在定义时就已经确定,不能随意改变. 你可以使用以下方式定义一个数组: var a ...

  3. Numpy,一篇足以

    numpy 用于数值计算 ndarray, 一个有效的多维数组,能提供以数组为导向的快速数值计算和灵活的广播功能(broadcasting) 便利的数学函数 用于读取/写入(reading/writi ...

  4. C# CEFSharp WCF开发桌面程序实现“同一网站多开”

    前言 孔乙己显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说:"对呀,对呀!CEFSharp,你用过么?访问同一网址实现多开怎么实现?比如我有3个淘宝店,我想同时登录维护,就像传说中的指 ...

  5. 【Unity3D】调整屏幕亮度、饱和度、对比度

    1 屏幕后处理流程 ​ 调整屏幕亮度.饱和度.对比度,需要使用到屏幕后处理技术.因此,本文将先介绍屏幕后处理流程,再介绍调整屏幕亮度.饱和度.对比度的实现. ​ 本文完整资源见→Unity3D调整屏幕 ...

  6. .NET5从零基础到精通:全面掌握.NET5开发技能【第二章】

    章节: 第一章:https://www.cnblogs.com/kimiliucn/p/17613434.html 第二章:https://www.cnblogs.com/kimiliucn/p/17 ...

  7. Web通用漏洞--文件上传

    Web通用漏洞--文件上传 概述 文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判 ...

  8. 《SQL与数据库基础》06. 函数

    目录 函数 字符串函数 数值函数 日期函数 流程函数 本文以 MySQL 为例 函数 函数是指一段可以直接被另一段程序调用的程序或代码. 要查看函数操作的结果,可以使用 SELECT 函数(参数); ...

  9. 【题解】AtCoder Beginner Contest 318(D - Ex)

    赛时过了 A-G,Ex 仿佛猜到了结论但是完全不懂多项式科技,就炸了. 大家好像都秒了 A,B,C 就不写了. D.General Weighted Max Matching 题目描述: 给你一个加权 ...

  10. Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用

    Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用 1. 什么是Dropdown组件? Dropdown(下拉菜单)是Unity UGUI中的一个常用组件,用于在用户点击或选择时显示一 ...