Promise promise的then方法 查找数组中是否有该元素 Map 第三个参数map函数中this指向问题 class类的基础调用和结构 class 类的继承问题

Set()里面的has() 与delect()案例

 

创建一个Promise对象  pening进行中 resolved已完成 rejected以失败

 <script>
        //创建一个 Promise对象
        let promise = new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log("hello world")
            }, 2000);
        })
    </script>

    <script>
        // 参数 resolve代表的是成功 
        // reject 代表的是失败
        // resolve 和 reject代表的都是函数
        let promise_1 = new Promise((resolve, reject) => {
            num = 20
            if (num > 10) {
                resolve("num大于10") //成功
            } else {
                reject("num小于10") //失败
            }
        })
        promise_1.then((data) => {
            console.log(data)
        }, (data) => {
            console.log(data)
        })
    </script>

catch( )用于捕获异常

 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>
    <input type="button" value="button" id="btn">
    <script>
        // 获取input 
        var btn = document.getElementById("btn")
        // 添加click点击事件
        btn.addEventListener('click', () => {
            // 创建一个promise对象
            var promise = new Promise((resolve, reject) => {
                // 弹出一个输入框
                var num = parseInt(prompt("请输入一个1-10以内的整数"))
                // 随机一个1-10的整数(不包含10)
                var random = Math.floor(Math.random() * 10)
                // 让他们if判断 相等就是猜对了
                setTimeout(() => {
                    if (num == random) {
                        resolve("猜对了")
                    } else {
                        reject("猜错了")
                    }
                }, 2000)
            })
            // 
            promise.then((data) => {
                alert(data)
            }).catch((data) => {
                alert(data)
            })

        })
    </script>
</body>

</html>

Set:集合跟数组很像,但是其中存放的元素是唯一的

Set可以解决数组去重问题

创建一个Set实例

const s  = new Set()

    <script>
        // Set() 可以自动去重
        var arr = [23, 23, 4, 4, 3, 3]
        var s_1 = new Set(arr)
        console.log(s_1) //Set(3) {23, 4, 3}

        //将Set()集合转化成数组,使用Array.from()
        var s_2 = new Set([1, 2, 3, 4, 5, 6])
        console.log(s_2); //Set(6) {1, 2, 3, 4, 5, …}
        var arr_1 = Array.from(s_2)
        console.log(arr_1); //(6) [1, 2, 3, 4, 5, 6]

        //获取元素的个数
        console.log(s_2.size) //6 (数组会自动去重)
        // add() 是给Set集合添加元素  
        //push() 给数组头部添加元素 pop()尾部删除 unshift()头部添加 shift() 头部删除
        var s_3 = new Set()
        s_3.add(30)
        console.log(s_3) //Set(1) {30} 
        
        var s_4 = new Set([8, 7, 6, 5, 5, 4, 3, 5, 23, 4])
        // delete()//删除
        console.log(s_4.delete(5))  //true
        // has() 判断是否有数字8
        if (s_4.has(8)) {
            // 有就删除
            s_4.delete(8)
            alert("删除成功")
        } else {
            console.log("没有")
        }
    </script>

 查找数组中是否有该元素 有就删除 没有就提示没有

<!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>
    <input type="text" name="" id="uname">
    <input type="button" value="删除" id="btn">
    <script>
        var sss = new Set(["zhangsan", "zhangsi", "zhangwu", "zhangliu"])
        document.getElementById("btn").addEventListener("click", () => {
            let name = document.getElementById("uname").value;
            if (sss.has(name)) {
                sss.delete(name)
                alert("删除成功")
                console.log(sss)
            } else {
                alert("数组中没有" + name + "无法删除")
            }
        })
        // console.log(sss)
    </script>
</body>

</html>

clear( ) 清空集合中全部的元素

迭代:

keys():返回键名;

values():返回键值;

entries():返回键值对;

键名=键值

    <script>
        let arr = [23, 43, 54, 34, 65, 43]
        var s_1 = new Set(arr)
        for (const i of s_1.keys()) {
            console.log("键:" + i);
        }
        console.log("...............");
        for (const i1 of s_1.values()) {
            console.log("值" + i1)
        }
        console.log("...............");
        for (const i2 of s_1.entries()) {
            console.log("键值对" + i2)
        }
        console.log("...............");
        s_1.forEach((values, keys) => {
            console.log(keys + ":" + values);
        })
    </script>

 

Map  

let m = new Map()

set(key , value) 添加 

get(key ) 读取 (根据键获取值)

clear() 清空

<script>
        // 创建一个Map对象
        //         set(key , value) 添加 

        // get(key ) 读取 (根据键获取值)
        let tels = new Map()
        tels.set("张三", "111111111")
        tels.set("张四", "222222222")
        tels.set("张五", "333333333")
        console.log(tels.get("张三"))
        console.log(tels)
        // clear() 清空  delete("张三") 删除一个数据
        console.log("----------")
        for (const q of tels) {
            console.log(q[0], q[1])// 张三, 111111111 张四, 222222222 张五 333333333
        }

        console.log("----------")
        const map1 = new Map()
        map1.set('k1', 1)
        map1.set('k2', 2)
        map1.set('k3', 3)
        console.log(Array.from(map1).toString()); //k1,1,k2,2,k3,3 

        console.log("----------")
        console.log(Array.from('hello world'));//(11) ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

        console.log(map1.keys());//{'k1', 'k2', 'k3'}
        console.log(map1.values());// {1, 2, 3}
        console.log(map1.entries());//{'k1' => 1, 'k2' => 2, 'k3' => 3}
        map1.forEach((value, key) => {
            console.log(key + ":" + value)  //k1:1  k2:2  k3:3

        })
    </script>

第三个参数map函数中this指向问题    

第三个参数,map函数中this指向的对象

该参数是非常有用的,我们可以将被处理的数据和处理对象分离,将各种不同的处理数据的方法封装到不同的的对象中去,处理方法采用相同的名字。

在调用Array.from对数据对象进行转换时,可以将不同的处理对象按实际情况进行注入,以得到不同的结果,适合解耦。

这种做法是模板设计模式的应用,有点类似于依赖注入。

<script>
        let diObj = {
            handle: function (n) {
                return n + 2
            }
        }
        console.log('%s', Array.from(
            [1, 2, 3, 4, 5],
            function (x) {
                return this.handle(x)
            }, diObj))
    </script>

class类

 class类的基础调用和结构   class 类的继承问题

<script>
        class Student {
            // 构造函数实现初始化
            constructor(name, sex, age) {
                this.name = name,
                    this.sex = sex,
                    this.age = age
            }
            // 行为:方法(函数)来实现
            chi() {
                console.log("吃饭")
            }
            shui() {
                console.log("睡觉")
            }
            setHello() {
                console.log(`我叫${this.name}是一名${this.sex}生,今年${this.age}岁`)
            }
            getName() {
                return this.name
            }
            cal(n, m) {
                console.log(n + m)
            }
        }
        let p0 = new Student("邵文潇", "男", 20)//赋值
        //调用
        p0.chi()
        p0.shui()
        p0.setHello()
        console.log(p0.getName())
        p0.cal(1, 2)
    </script>

class 类的继承问题

<script>
        class Student {
            // 构造函数实现初始化
            constructor(name, sex, age) {
                this.name = name,
                    this.sex = sex,
                    this.age = age
            }
            chi() {
                console.log("吃饭")
            }
            shui() {
                console.log("睡觉")
            }
            setHello() {
                console.log(`我叫${this.name}是一名${this.sex}生,今年${this.age}岁`)
            }
            getName() {
                return this.name
            }
            cal(n, m) {
                console.log(n + m)
            }
        }
        let p0 = new Student("邵文潇", "男", 20)
        // 继承 class Person(子类) extends Student(父类)
        class Person extends Student {
            // 当子类继承了父类,那么子类就可以访问父类中的属性,函数
            // 子类使用的构造器constructor 的时候必须使用
            constructor(name, sex, age, stuid) {
                super(name, sex, age) //必须现调用一下super()函数
                this.stuid = stuid
            }
        }
        let stu = new Person("张三", "女", "20", "1001")
        // 当父类和子类中有相同名称的函数时,调用的时子类中的函数,这就相当于子类将父类中的同名函数进行了重写
        stu.chi()
        console.log(stu.name)
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值