尚硅谷Web前端ES6教程,涵盖ES6-ES11的学习笔记

前言

各位读者好,我正在努力学习前端中,这里是我的学习笔记分享,希望能够对大家有用。
我学习的视频链接是尚硅谷ES6
此外,我还有其它前端内容的笔记,大家有需要的可以自行查找。

ES6

let关键字

在这里插入图片描述
特点

  • let变量不能重复声明,var可以重复声明
  • 作用域为块级
  • 不能变量提升
  • 不影响作用域链的效果

const 定义常量

在这里插入图片描述

注意:数组内容可以改变,但数组的地址不可以改变

变量的解构赋值

在这里插入图片描述

模板字符串

在这里插入图片描述

简化对象

在这里插入图片描述

箭头函数

在这里插入图片描述
特点:

  • this是静态的.this始终指向函数声明时所在的作用域下的this的值
  • 不能作为构造实例化的对象
  • 不能使用arguments变量
  • 可以简写
    在这里插入图片描述

注意:箭头函数适合与this 无关的回调、定时器、数组的方法的回调函数,不适合与 this 有关的回调、事件回调、对象的方法。

函数参数默认值

在这里插入图片描述

rest参数

在这里插入图片描述

扩展运算符

在这里插入图片描述
扩展运算符的运用
在这里插入图片描述

Symbol的使用

ES6引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型。

Symbol特点

  • Symbol的值是唯一的,用来解决命名冲突的问题
  • Symbol值不能与其他数据进行运算
  • Symbol定义的对象属性不能使用for…in循环遍历,但是可以使用
    Reflect.ownKeys来获取对象的所有键名

在这里插入图片描述
在这里插入图片描述

Symbil创建对象属性

在这里插入图片描述
在这里插入图片描述

Symbol的内置属性

共有11个内置属性,这里是详细介绍

迭代器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成器函数

在这里插入图片描述

生成器的函数参数

在这里插入图片描述
生成器函数例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //异步编程
        //1s 后控制台输出111   2s后输出222  3s后输出333
        /*回调地狱,慢
        setTimeout(()=>{
            console.log(111);
            setTimeout(()=>{
                console.log(222);
                setTimeout(()=>{
                    console.log(333)
                },3000)
            },2000)
        },1000)*/

        //生成器函数
        function one(){
            setTimeout(()=>{
                console.log(111);

            },1000)
        }
        function two(){
            setTimeout(()=>{
                console.log(222);

            },2000)
        }
        function three(){
            setTimeout(()=>{
                console.log(333);

            },3000)
        }

        //生成器函数
        function * gen(){
            yield one();
            yield two();
            yield three();
        }
        //调用生成器函数
        let iterator = gen();
        iterator.next();
        iterator.next();
        iterator.next();
        iterator.next();

        //模拟获取 用户数据 商品数据 订单数据
        function getUsers(){
            setTimeout(()=>{
                let data = '用户数据'
                //调用next方法,并且将数据传入
                iterator1.next(data)
            },1000)
        }
        function getOrders(){
            setTimeout(()=>{
                let data = '订单数据'
                iterator1.next(data)
            },1000)
        }
        function getGoods(){
            setTimeout(()=>{
                let data = '商品数据'
                // iterator1.next(data)
            },1000)
        }
        

        function * ma(){

            let users =yield getUsers();
            console.log(users);
            let orders = yield getOrders();
            console.log(orders);
            yield getGoods();
        }
        //调用生成器函数
        let iterator1=ma();
       iterator1.next();
    </script>
</body>
</html>

Promise

在这里插入图片描述
基本使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //实例化Promise对象
        const p = new Promise(function(resolve,reject){
            setTimeout(function(){
                //正确读取
                let data = '数据库中的用户数据'
                resolve(data)
                //失败读取
                let  err = '数据读取失败'
                reject(err)
            },1000);
        });
        //调用Promis对象的then方法,成功调用前一个函数,失败调用后一个函数
        p.then(function(value){
           console.log(value); 
        },function(reason){
            console.log(reason)

        })
    </script>
</body>
</html>

用Promise封装

//导入fs模块
const fs = require('fs')

//使用Promise 封装
const p =new Promise(function(resolve,reject){
    fs.readFile('./文件1.md',(err,data)=>{
        //如果失败
        if(err) reject(err);
        //成功
        resolve(data);
    })
});

p.then(function(value){
    console.log(value.toString());
},function(reason){
    console.log("读取失败");
});

用Promise对AJAX的操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //接口地址:https://api.apiopen.top/getJpke
        const p = new Promise((resolve,reject)=>{

        //1.创建对象
        const xhr = new XMLHttpRequest();
        //2.初始化
        xhr.open("GET","https://api.apiopen.top/getJpke")
        //3.发送
        xhr.send();
        //4.绑定事件,处理响应结果
        xhr.onreadystatechange = function(){
            //判断
            if(xhr.readyState === 4)
                //判断响应状态码200-299
                if(xhr.status>=200&&xhr.status<=299)
                    //成功
                    resolve(xhr.response);
                    else
                        //失败
                        reject(xhr.status);
        }
    });

        p.then(function(value){
            console.log(value);
        },function(reason){
            console.log(reject);
        });
    
    </script>
</body>
</html>

Promise的then属性的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //创建Promise对象
        const p = new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve('用户数据')
                reject('发生错误')
            },1000)
        });

        //调用then方法  then返回的结果是Promise对象,对象状态有回调函数执行结果决定
        //1.返回结果是非Promise类型的属性,状态成功,返回值为对象成功的值
        // const result =p.then(value=>{
        //     console.log(value);
        //     // //1.非promise类型的属性
        //     // // return '123';
        //     // //2.是promise对象 , 返回值为then方法返回的值
        //     // return new Promise((resolve,reject)=>{
        //     //     // resolve('ok');
        //     //     reject('error')
        //     // });
        //     //3.抛出错误
        //         // throw new Error('错误');

        // },function(reason){
        //     console.warn(reason);
        // });

        //链式调用改变回调地狱的问题
        p.then(value=>{

        }).then(value=>{

        })
        console.log(result);
    </script>
</body>
</html>

promise的catch对象的使用方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const p = new Promise((resolve,reject)=>{
            setTimeout(()=>{
                //设置p对象为失败,并设置失败值
                reject('失败')
            },1000);
        })
        //不用第一个参数
        p.catch(function(reason){
            console.warn(reason);
        })
    </script>
</body>
</html>

set集合

在这里插入图片描述
在这里插入图片描述

用集合实现数组去重、交并补

在这里插入图片描述
在这里插入图片描述

map

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class类

在这里插入图片描述
在这里插入图片描述
class类中的静态成员
在这里插入图片描述

继承与class继承

继承
在这里插入图片描述
class继承
在这里插入图片描述

get与set

在这里插入图片描述

数值扩展

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对象扩展的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模块化

暴露汇总

在这里插入图片描述
分别暴露
在这里插入图片描述
统一暴露
在这里插入图片描述
默认暴露
在这里插入图片描述

引用汇总

在这里插入图片描述
在这里插入图片描述
模块化建议单独设置一个js文件,作为引入文件的集合
在这里插入图片描述

在这里插入图片描述

模块化兼容

在这里插入图片描述
在这里插入图片描述

ES7

include

在这里插入图片描述

**

在这里插入图片描述

ES8

async函数

在这里插入图片描述

await表达

在这里插入图片描述
async函数与await表达的结合,是异步看样子是同步一样,处理速度加快
在这里插入图片描述

扩展对象的方法

在这里插入图片描述
在这里插入图片描述

ES9

rest 运算符

在这里插入图片描述
在这里插入图片描述

正则扩展

命名捕获分组

命名捕获分组自身的语法是 (?…),比普通的分组多了一个 ? 字样,其中 name 的起法就和你平时起变量名一样即可(不过在这里关键字也可用)。反向引用一个命名分组的语法是 \k,注意命名分组同样可以通过数字索引来反向引用

反向断言

在这里插入图片描述

dotALL模式

在这里插入图片描述

ES10

对象扩展

在这里插入图片描述

字符串扩展 trimSta与trimEnd

在这里插入图片描述

数组扩展 flat 与flatMap

在这里插入图片描述

ES11

私有属性

私有属性只能出现在类内部,不能出现下类外面,即便是类外引用也不行
在这里插入图片描述

promise.allSettled

在这里插入图片描述

string.prototype.matchAll

这是为了批量匹配正则表达式
在这里插入图片描述

可选链操作

在这里插入图片描述

动态import函数引用

在这里插入图片描述

BigInt属性

在这里插入图片描述

gobalThis绝对全局变量

改变量字如其名,无论在什么情况下,都是指向全局变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子与金与玉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值