ES6

2020-02-27  本文已影响0人  南崽

历史

ECMAScrit 是96年 网景公司吧javascript提交给 欧洲计算器制作联合会

版本

前端框架与语言

let与Const

let 局部变量声明

  1. 只能在一对{}里面有用
  2. 不能重复声明
  3. 不会变量提升(在变量声明前访问会报错)

const 常量声明

  1. 声明必须赋值
  2. 赋值不能修改(简单数据类型)
  3. 建议变量名 大小

解构

对象解构

let {name,age} = {name:"abc",age:18}
let{name:foo}={name:"abc"}
foo 值就是 abc
...rest
let {name,age,weight=120} = {name:"abc",age:18}

没有顺序,变量名必须要和对象的键名一致

数组解构

let[a,b] = [12,18];
// a 12
// b 18
let[a,b,[c,d,e]] = [1,2,[3,4,5]];
// c 3   
// d 4   
// e 5
let[a,,b] = [1,2,3];
// a 1
// b 3
let [a,...rest] = [1,2,3,4,5];
// rest[2,3,4,5]
let [a,b,c,d] = "中国加油";
// a 中
// b 国
let [a,b=20] = [30];
// b 20
// 如果解析出来的值是undefined 那么就用默认值代替

字符串

空白

检测包含

重复

填充

模板

1.符号 ``
2.可以在字符串模板里面任意换行
3.单双引号 特殊符号不需要转义
4.添加变量 ${变量名}

var name = "abc";
var age = 19;
var str = `大家好,我的名字是${name},今年我${age}岁了`;

数字

数组

迭代方法

查找

函数

箭头函数的特点

  1. => 左边是函数的参数
  2. => 右边是函数的执行语句 也是返回值
  3. => 如果参数不是一个用()包裹参数
  4. => 如果执行语句有多条用{}
  5. => 如果执行语句多条,返回用return关键字
  6. => 如果返回的是对象用()
  7. => this指向当前的指向环境

默认参数

function add(a=1,b=1){
    alert(a+b)
}
add(4,5);
add();

不定参数

function add(...args){
    //args就是函数参数的数组列表
}

对象

  1. 对象的简写(变量名和对象的键一致时候)
  2. 对象属性的表达式[]
  3. 对象的拷贝合并 Object.create()
  4. 对象扩展:

map

特点

  1. 有顺序
  2. 键名可以是任意类型
  3. size 长度

初始化

var map = new Map([[key,val],[key2,val2]]);

方法

属性

遍历

for(let [k,v] of map2){
    //k 键名
    //v 值
}

转数组

Array.from(map)

展开合并

[...map1,...map2]

set

不重复的数组

初始化 new set([])

方法

属性

转数组

for of ES6 新的遍历方法

for(let [k,v] of map){}

可迭代方法

定义: 创造实例对象的一个模板

class 类名 {}

class Animal{}

constructor(){} 构造函数

constructor(name,color){}

new Animal("小乖乖","blue");

say(){} 一般方法

var d1 = new Animal();
d1.say()

static toName(){} 静态方法

Animal.toName()

静态属性

static price = 100;

Animal.price

继承

class 类名 extends 父类名 {}
super()

class Dog extends Animal{
    constructor(){
        super();
    }
}

getter setter

  1. 成对出现
  2. 不能够直接赋值 和 设置已经有的属性
constructor(age){
    this.age = age;
}
get Age(){
    return this.age()
}
// d1.Age 调用大写的Age属性是会执行 get Age()这个函数返回的小写的age的值
set Age(val){
    this.age = val;
}
// 当d1.Age=15抵用 set Age 这个方法最终设置的是小写的age的值

模块

1. 导出 export

  1. 基本
export {name,age,fun,Animal}
  1. 使用as
export {Animal as An}
  1. default 默认
export default Animal;

2. 导入 import

  1. 基本
import {name,age,fun,Animal} from "./xxx.js";
import{An} from "./xxx.js";

import 也可以使用as
import {Animal as An} from "./xxx.js";
var a1 = new An();
 import Animal from "./xxx.js"

promise 承诺

定义: 返回一个延期的承诺,用then来接受结果

作用

  1. 按顺序执行异步调用
  2. 避免回调函数 多层嵌套
  3. race 有一个resolve 就调用 then
    4.all 等所有结果都resolve 才调用then 方法

基本写法

new Promise((resolve,reject)=>{
    resolve(结果)
    reject(原因)
})
.then(
res=>{//获取结果},
err=>{//捕捉错误})
.catch(err=>{捕捉错误})

race

Promise.race([多个异步调用])
.then(res=>{返回的是最快resolve结果})

all

Promise.all([多个异步调用])
.then(list=>{所有的resolve结果列表})

generator 生成器

定义

function * say(){
    yield "1";
    yield "2";
    yield "3";
}
var it = say();

it.next() //{value:"1",done:false}

it.next() //{value:"2",done:false}

it.next() //{value:"3",done:true}

it.next() //{value:undefined,done:true}

async 异步

await 等待

异步编程

function say(){return new Promise()}
async function doit(){
    await say();
    await say();
    await say();
}
say()
.then(res=>{return say()})
.then(res=>{return say()})

proxy 代理

定义:可以对目标对象的读取调用...进行拦截

  1. 目标对象
let target = {name:"abc",age:18};
  1. 处理
let handler = {
    get(target,key){},
    set(target,key,value,receiver){}
}
 let proxy = new Proxy(target,handler)

处理函数

Reflect 反射

常用方法

Reflect.ownKeys(obj) 
// 获得对象键的列表
Reflect.set(obj,key,value) 
// 设置对象的值
Reflect.get(obj,key) 
// 获取对象的值
Reflect.has(obj,key) 
// 检测是否有某个值
上一篇 下一篇

猜你喜欢

热点阅读