• set和map结构,class类


    1、set数据结构和map数据结构:

    (1)set: 数据结构set(集合,无序且值不能重复的数据集合,特点是key值和value值相同,没有重复的value
    //1 创建set
    var s=new Set([1,2,3])
    console.log(s)
    //2 set的属性,size(和length是一样的)
    console.log(s.size)  //3
    //3 set的方法,(1)add方法-添加可以链式操作,返回的事set本身
    
    console.log(s.add('a').add('b').add('c'))
    //delete(value)-删除,返回布尔值,true或者false
    console.log(s.delete('a'))
    console.log(s)
    //has(value) 判断是否有某个值,返回布尔值
    console.log(s.has('a'))
    //clear()方法  清除数据,没有返回值
    // s.clear();
    // console.log(s)
    //遍历方法有 s.keys()返回遍历键值,s.values()返回遍历value s.entries()返回键值和value对,s.forEach()方法,遍历每个成员
    console.log(s.keys())
    console.log(s.values())
    console.log(s.entries())
    s.forEach(function(value,key,set){
        console.log(value+'wir')
    })

    (2)map:map不同于set(集合),它使用的是[键,值]的形式储存数据,与object不同的是object键值只能是字符串也就是字符串-值,而map允许键值可以是对象也就是值-值

    //一 创建map
    let map=new Map([['a',1],['{b:2}',2]])
    console.log(map)
    //二 方法 set(key,value),设置键名key对应的值为value,然后返回整个map结构,也就是可以链式操作,如果key有值,则会被后来的覆盖
    //get(key) 返回key对应的值,没有则undefined
    //delete(key)删除key对应的值,返回布尔值 true或者false
    //has(key)判断是否有某个key,返回布尔值true false
    //clear() 清空
    //遍历方法 keys():遍历key值
    console.log(map.keys())
    //values() :遍历values
    console.log(map.values())
    //entries():键值对遍历
    console.log(map.entries())
    //forEach()
    map.forEach(function (key,value,map) {
        console.log(key+''+value)
    })
    //NaN是互补相等的,但是在map里面认为是同一个,不能重复添加,对象{}可以
    map.set({},'a').set({},'b')
    console.log(map)

    2、class类:JS语言的传统方法是通过构造函数,定义并生成新对象,是一种基于原型的面向对象系统。现在js越来越像java等面向对象语言差别很大,所以在ES6中新增了类的概念,可以使用 class 关键字声明一个类,之后以这个类来实例化对象

    // const Xub= function (a, b){
    //   this.a = a;
    //   this.b = b;
    //   return this;
    // };
    //
    // Xub.prototype = {
    //   constructor:Xub,
    //   print: function (){
    //     console.log(this.a + ' ' + this.b);
    //   }
    // };
    //
    //
    // const xub= new Xub('hello', 'world').print();
    class Xub{
        constructor(a,b){
            this.a=a;
            this.b=b;
            // return this
        }
        print(){
            console.log(this.a,this.b)
        }
    }
    const result=new Xub('hello','world').print()
    // 1 Xub这个类除了构造方法,还定义了一个print方法。
    // 注意,定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。
    // 另外,方法之间不需要逗号分隔,加了会报错。
    // 2 构造函数的prototype属性,在ES6的“类”上面继续存在。而且类的所有方法都定义在类的prototype属性上面。
    console.log(Xub.prototype)
    //  3 constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。
    // 一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。
  • 相关阅读:
    9-29 函数嵌套及作用域链
    9-29 函数进阶_命名空间和作用域
    9-28 函数
    9-27 文件的”改”、删、重命名
    9-26 联合文件的登录注册
    9-26 文件操作一些功能详解
    9-26 文件操作
    9-26 复习数据类型
    9-25 集合
    python基础day7_购物车实例
  • 原文地址:https://www.cnblogs.com/bing1991/p/8746368.html
Copyright © 2020-2023  润新知