第三章:ES6基础---Map、class 类、数值扩展、对象扩展、模块化

一:Map

ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。但是“键” 的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map 也实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历。Map 的属 性和方法:

1) size 返回 Map 的元素个数

2) set 增加一个新元素,返回当前 Map

3) get 返回键名对象的键值

4) has 检测 Map 中是否包含某个元素,返回 boolean 值

5) clear 清空集合,返回 undefined

  //声明 Map
        let m = new Map();

        //添加元素
        m.set('name','university');
        m.set('change', function(){
            console.log("我们可以改变你!!");
        });
        let key = {
            school : 'UNIVERSITY'
        };
        m.set(key, ['北京','上海','深圳']);

//size
        // console.log(m.size);

//删除
        // m.delete('name');

//获取
        // console.log(m.get('change'));
        // console.log(m.get(key));

//清空
        // m.clear();

//遍历
        for(let v of m){
            console.log(v);
        }

         console.log(m);

二:Class 类

ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对 象的模板。通过 class 关键字,可以定义类。基本上,ES6 的 class 可以看作只是 一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象 原型的写法更加清晰、更像面向对象编程的语法而已。 知识点:

1) class 声明类

2) constructor 定义构造函数初始化

3) extends 继承父类

4) super 调用父级构造方法

5) static 定义静态方法和属性

6) 父类方法可以重写

        //西游记
        function xiyouji(name, age){
            this.name = name;
            this.age = age;
        }

        //添加方法
        xiyouji.prototype.call = function(){
            console.log("我可以上天!!");
        }

        //实例化对象
        let sunwukong = new xiyouji('孙悟空', 10000);
        sunwukong.call();
        console.log(sunwukong);

        //class
        class renwu{
            //构造方法 名字不能修改
            constructor(name, age){
                this.name = name;
                this.age = age;
            }

            //方法必须使用该语法, 不能使用 ES5 的对象完整形式
            call(){
                console.log("我可以下地府!!");
            }
        }

        let zhubajie = new renwu("猪八戒", 8000);

        console.log(zhubajie);

 Class的get和set属性

  // get 和 set  
        class xiyouji{
            get name(){
                console.log("人物姓名属性被读取了");
                return '孙悟空';
            }

            set name(newVal){
                console.log('人物姓名属性被修改了');
            }
        }

        //实例化对象
        let s = new xiyouji();

        // console.log(s.name);
        s.name = 'zhubajie';

三:数值扩展

(1)进制

二进制0b

八进制0o

十六进制0x

(2)方法

Number.isFinite

检测一个数值是否为有限数

Number.isNaN

检测一个数值是否为 NaN

Number.isInteger

判断一个数是否为整数

Math.trunc

用于去除一个数的小数部分,返回整数部分

Math.sign

判断一个数到底为正数 负数 还是零

Number.parseInt

Number.parseFloat

字符串转整数

四:对象扩展

ES6 新增了一些 Object 对象的方法

1) Object.is 比较两个值是否严格相等,与『===』行为基本一致(+0 与 NaN)

 Object.is 判断两个值是否完全相等 
         console.log(Object.is(120, 120)); 
         console.log(Object.is(NaN, NaN)); 
         console.log(NaN === NaN);

2) Object.assign 对象的合并,将源对象的所有可枚举属性,复制到目标对象

Object.assign 对象的合并
         const config1 = {
             host: 'localhost',
             port: 3306,
             name: 'root',
             pass: 'root',
             test: 'test'
         };
         const config2 = {
             host: 'http://www.baidu.com',
             port: 33060,
             name: 'www.baidu.com',
             pass: 'iloveyou',
             test2: 'test2'
         }
         console.log(Object.assign(config1, config2));

3) __proto__、setPrototypeOf、 setPrototypeOf 可以直接设置对象的原型

Object.setPrototypeOf 设置原型对象  Object.getPrototypeof
        const school = {
            name: '大学'
        }
        const cities = {
            xiaoqu: ['北京','上海','深圳']
        }
        Object.setPrototypeOf(school, cities);
        console.log(Object.getPrototypeOf(school));
        console.log(school);

五:模块化(模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。)

(1)优点

1) 防止命名冲突

2) 代码复用

3) 高维护性

(2)ES6 模块化语法

模块功能主要由两个命令构成:export 和 import。

1) export 命令用于规定模块的对外接口

2)import 命令用于输入其他模块提供的功能

1. 通用的导入方式
         //引入 m1.js 模块内容
         import * as m1 from "路径名1";
         //引入 m2.js 模块内容
         import * as m2 from "路径名2";
         //引入 m3.js 
         import * as m3 from "路径名3";

2. 解构赋值形式
         import {school, teach} from "路径名1";
         import {school as university, findJob} from "路径名2";
         import {default as m3} from "路径名3";

3. 简便形式  针对默认暴露
         import m3 from "路径名";
         console.log(m3);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值