ES6新增数据类型、设计模式、模块化编程

目录

一、ES6新增

 1、基本数据类型

 2、复杂数据类型

   --Set

   --Map

二、设计模式

 1、创建型模式

 2、结构型模式

 3、行为型模式

三、模块化编程

 1、前端模块:

 2、AMD模块化

 3、CMD模块化

 4、ES6模块化


一、ES6新增

 1、基本数据类型

        --Symbol

          语法:let s = Symbol('描述信息')

          含义:表示唯一值,会自动生成一个唯一的值

          场景:自己封装第三方包共他人使用

                使用第三方包

 2、复杂数据类型

     --Set

          特点:

             1、存储一系列无序数据的集合

             2、数据不能重复

          语法:

              let set1 = new Set()

              let set2 = new Set([])

          属性:

             1、size:元素个数

          方法:

             1、add('添加的元素'):用来向该数据类型中添加数据

             2、delete('删除的元素'):删除数据类型中某一个元素

             3、clear():清空数据类型中的所有数据

             4、forEach:遍历Set数据结构

             5、...展开运算符:可以实现Set转Array

          重点特性:

             数据不重复,实现数组去重

   --Map

          特点:

            1、存储key - value值对的集合

            2、key任意类型

          语法:

            let map = new Map()

            let map = new Map([[key1,value1],[key2,value2]....])

          属性:

            size:返回元素个数

          方法:

             1、set(key,value):用来向该数据类型中添加数据

             2、get(key):用来向该数据类型中获取数据

             3、delete(key):删除数据类型中某一个元素

             4、clear():清空数据类型中的所有数据

             5、has(key);判断该数据类型里面是否有该值

二、设计模式

      概念:软件开发人员在软件开发过程中面临的一般问题的解决方案

      分类(23中经典设计模式):

 1、创建型模式

          --单例模式

            概念:保证在整个应用程序中只有一个实例对象存在

            语法:

              创建对象之前判断创建的对象是否存在,如果不存在创建,如果存在直接复用

              static getInstance(){

                if(this.instance == null){

                  this.instance = new Person()

                }

                retrun this.instance

              }

            方法:

              static 静态方法(类方法),可以通过类名直接调用Person.getInstance()

 2、结构型模式

3、行为型模式

          --观察者模式

            概念:对象与对象之间通讯的关系

三、模块化编程

       概念:将一个复杂的程序根据一定的规则封装成几个块

             块的内部数据是私有的,只有向外部暴露一些接口,与外部其他模块通信  

 1、前端模块:

         每个js文件就是一个模块

         util.js模块

          1、私有

          2、暴露属性和方法

          3、其他的模块引用之后可以使用

        实现模块化

           1、commonjs模块化(同步加载)

              --每个js文件就是一个模块

              --a.js模块

                   --暴露属性或方法

                      module.exports.模块名 = 变量或方法函数

                         简写方式:

                              module.exports = {

                                模块名:变量或方法函数

                                模块名:变量或方法函数

                                        ....

                                    }

           --引用

              let 变量名 = require(要引用的模块地址)

              变量名.模块名

              变量名.方法函数()

           --使用环境

              后端Ajax

   2、AMD模块化

           --

   3、CMD模块化

           --

  4、ES6模块化

           --暴露模块属性或方法

             语法:export{属性或方法}

           --引入模块

             import{导入的属性和方法} from '要引用的模块地址'

           --前端引用

             

           --只暴露一个对象和函数时

             export default 对应的数组

             引用:inport 自定义名字 form '要引用的模块地址'

             使用:自定义名字.

你可能感兴趣的:(JavaScript,设计模式)