JavaScript简介
JavaScript一种动态类型、弱类型、基于原型的客户端脚本语言,用来给HTML网页增加动态功能。
JavaScript由三部分组成:
ECMAScript(核心)+DOM(文档对象模型)+BOM(浏览器对象模型)
ECMAScript作为核心,规定了语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象
DOM把整个页面映射为一个多层节点结果,开发人员可借助DOM提供的API,轻松地删除、添加、替换或修改任何节点。
BOM支持可以访问和操作浏览器窗口的浏览器对象模型,开发人员可以控制浏览器显示的页面以外的部分
ES5简介
ECMAScript第五个版本,增加了以下特性
1、strict模式
2、Array的every、some、forEach、filter、indexOf、lastIndexOf、isArray、map、reduce、reduceRight等方法
3、Object方法
ES6
ECMAScript第六个版本,增加的新特性:
1、块级作用域 关键字let,常量const
2、对象字面量的属性赋值简写
3、赋值解构
4、函数参数-默认值、参数打包、数组展开(Default、Rest、Spread)
5、箭头函数 Arrow functions
简化了代码形式,默认return表达式结果
自动绑定语义this,即定义函数时的this。
6、字符串模板Template strings
7、Iterators(迭代器)+for..of
迭代器的next方法,调用会返回:
(1)返回迭代对象的一个元素:{done:false, value:elem}
(2)如果已经达到迭代对象的末端:{done:true, value:retVal}
8、生成器(Generators)
9、Class,有constructor、extends、super
10、Modules
(1)具有CommonJS的精简语法、唯一导出出口(single exports)和循环依赖(cyclic dependencies)的特点
(2)类似AMD,支持异步加载和可配置的模块加载
11、四种集合类型,Map+Set+WeakMap+WeakSet
12、一些新的API
Math+Number+String+Array+Object APIs
13、Proxies
使用代理(Proxy)监听对象的操作,包括get、set、has、deleteProperty、apply、construct、getOwnPropertyDescriptor、defineProperty、getPrototypeOf、setPrototypeOf、enumerate、ownKeys、preventExtensions、isExtensible。
14、Symbols
一种基本类型,通过调用symbol函数产生,接收一个可选的名字参数,该函数返回的symbol是唯一的。
15、Promises
是处理异步操作的对象,使用了Promise对象之后可以用一种链式调用的方式来组织代码,让代码更直观
最常用的ES6特性
let,const,class,extends,super,arrow functions,template string,destructuring,default,rest arguments。
1、let,const用途与var类似,都是用来声明变量的。
ES5只有全局作用域和函数作用域,会造成内层变量覆盖外层变量;
const也用来声明变量,但是声明的是常亮。一旦声明,常亮的值就不能改变,当尝试去改变const声明的变量时,浏览器就会报错。
2、class,extends,super
class类里的constructor方法,即为构造方法,this关键字则代表实例对象。
class之间可以通过extends关键字实现继承。
super关键字,它指代父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,否则新建实例时会报错。
3、arrow function
箭头函数的形式
(参数)=>{函数体操作一;函数体操作二;return 返回值}
4、template string
传统的写法需要用大量的‘+’号来连接文本与变量,而使用ES6的新特性模板字符串‘’后,可以用反引号()来标识起始,用${}’来引用变量,而且所有的空格和缩进都会被保留在输出之中。
5、Destructuring(解构)
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值。