ES6基础知识点总结

先浅复习一下es6

let与const

作⽤域 全局作⽤域

局部作⽤域

块级作⽤域

let ⽤法:声明⼀个变量

特点: ​ 只在声明的代码块内有效

在同⼀作⽤域内不允许重复声明

没有变量提升

暂时性死区

用法:声明一个只读的变量(可理解为常量)

特点:同let命令

简单类型如字符串、数字和布尔值,值就保存在变量指向的内存地址。而复杂类型的数据如对象、数组和函 数,变量指向的内存地址,实际上是保存了指向实际数据的指针。所以const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,

ES6之前JavaScript的数据类型

Number(数字)

String(字符串)

Boolean(布尔值)

Object( 对 象 )

Null(空对象指针)

Undefined(声明的变量未被初始化时)

数据类型Symbol

es6引入Symbol这种新的原始数据类型确保创建的每个变量都是独一无二的

解构赋值

举例:

{
	let a,b,c
	[a,b,c]=[1,2]
	console.log(a,b,c)//1,2,undefined
}

对象解构

字符串解构

布尔值解构

函数参数解构

数值解构

ES6新增的内置对象

ES6提供的新的字符串方法及模板字符串

方法描述
includes(string, position)判断字符串中是否包含指定字符串,返回值是布尔值
startsWith(string, position)判断字符串的开头是否包含指定字符串,返回值是布尔值
endsWith(string, position)判断字符串的尾部是否包含指定字符串,返回值是布尔值
repeat(n)repeat() 方法返回一个新字符串,表示将原字符串重复n 次。
字符串补全第一个参数是补全后的字符串长度,第二个参数是用于补全的字符串
padStart(length, str)用于头部补全
padEnd(length, str)用于尾部补全

模板字符串

const name="⼩明"constage=18
const hobbies="游泳、跑步和打篮球"
// ES5写法
const str1='我的名字是'+name+',我今年'+age+'岁,我喜欢'+hobbies
console.log(str1)
// ES6写法
const str2=`我的名字是${name},我今年${age}岁,我喜欢${hobbies}`
console.log(str2)

模板字符串中的${. .. } 大括号内部可以放入任意的 JavaScript 表达式,可以进行运算、可以引用对象属性、可以调用函数、可以甚至还能嵌套,甚至还能调用自己本身

内置API

属性/方法作用例子
size返回键值对的数量m.size
clear()清除所有键值对m.clear()
has(key)判断键值对中是否有指定的键名,返回值是布尔值m.has(key)
get(key)获取指定键名的键值对,如不存在则返回 undefinedm.get(key)
set(key, value)添加键值对,如键名已存在,则更新键值对m.set(key, value)
delete(key)删除指定键名的键值对m.delete(key)

Set是ES6给开发者提供的一种类似数组的数据结构,可以理解为值的集合。它和数组的最大的区别就在于: 它的值不会有重复项。

//创建
let set = newSet();
let set2 = newSet([1,2,3])
//添加元素
set.add(1)

ES6中的代理Proxy和反射Reflect

Proxy

概述

正如Proxy的英译"代理理"所示,Proxy是ES6为了操作对象引入的API。它不直接作用在对象上,而是作为一种媒介,如果需要操作对象的话,需要经过这个媒介的同意。

target:⽤Proxy包装的⽬标对象
** handler:⼀个对象,对代理对象进⾏拦截操作的函数,如set、get*/
let p = newProxy(target,handler)

Reflect

概述

与Proxy相同,ES6引入Reflect也是用来操作对象的,它将对象里一些明显属于语言内部的方法移植到Reflect对象上,它对某些方法的返回结果进行了修改,使其更合理,并且使用函数的方式实现了Object的命令式操作

箭头函数

特点

更短的函数

不绑定this

注意事项

什么情况下用箭头函数

箭头函数没有argument

传统的javascript中只有对象,没有类的概念。它是基于原型的面向对象语言。原型对象特点就是将自身的属性共享给新对象。

new操作做了什么事

返回(产生)了一个新的对象

将这个空对象的_ proto_指向了了构造函数内部的prototype

将构造函数的this绑定到这个对象上(即new创建的对象,其函数体内的this指向的是这个对象)

返回到这个新对象上

es6 class的概念

定义类

类的继承

子类向父类传递参数

静态方法

静态属性

异步编程

什么是同步

当一个"调用"发出时,在没有得到结果之前,这个"调用"就会阻塞后面代码的执行,得到结果的时候才会返回。换句话说,"调用者"要主动等待代码的执行结果,得到返回结果后,程序才会继续运行。

什么是异步

"调用"发出的时候,就直接返回了,对应的结果会通过状态、通知来告诉"调用者"或通过回调函数处理这个调用。异步调用发出后,不会阻塞后面的代码。

JavaScript中为什么要引入异步这个概念

JavaScript是单线程的

同步代码会阻塞后面的代码

异步不会阻塞程序的运行

JavaScript中异步的实现

回调函数

setInterval和setTimeout

Promise

Generator

async

Promise的概念及其原理

为了解决"回调地狱"的问题,提出了Promise对象

Promise是一个对象,也可以说是一种编程思想。应用的场景就是"当xxx执行完毕的时候,then执行xxx动作"。Promise里不仅可以存放着异步的代码,也可以放同步的代码。

Promise的使用

封装一个Promise

捕获异常

Promise.all方法

Promise.race

Iterator及其作用和与for…of循环的关系

Iterator(遍历器)是一种接口,目的是为了给不同的数据结构提供统一的循环方式,任何数据结构如果部署了Iterator接口,就能够实现遍历的操作

Iterator的作用

为不同的数据结构,提供一个统一的、简便的访问接口

将数据成员按照一定的顺序输出

提供给ES6中的for…of的这个循环语句进行使用

具备原生的Iterator接口

Array

String

Set

Map

函数的argument对象

Generator函数

什么是Generator

用于生成一个迭代器Iterator

next()

yield

async

什么是async

async是异步的简写,用于声明一个函数是异步函数


版权声明:本文为gsblyy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。