2020922王杉

学习内容:

ES6:

  • 解构

    1. 定义:将一个大的对象或数组中集中存储的成员中的个别成员,取出来单独使用

    2. 为什么使用;什么时候使用:将来从服务器返回的对象或数组可能很复杂;凡是获得结构结构嵌套复杂的对象,都要先解构成多个小的成员,再分别单独使用

      • 使用结构:

      1. 数组解构:提取出索引数组中指定位置的元素,保存在单独的变量中独立使用
      2. 使用:var [变量1, 变量2,...]=数组
        下标:0 1

      • 对象解构:

      1. 仅提取出复杂对象中的个别成员属性或方法,保存在变量中,单独使用
      2. 使用:var{ 属性名1 : 变量1 , 属性名2 : 变量2 ,...}=对象;
      3. 原理:同时声明多个变量,去对象中查找相同属性名的属性值,赋值给对应位置的变量,每个变量中都获得了自己对应属性名的属性值。将来每个变量都可以单独使用

      • 参数解构:

      1. 将所有的参数都定义在一个对象结构中,再传参,调用函数传参时,也是将所有实参值都放在一个对象中传入

      2. 使用参数解构:①在定义函数时,将所有形参放在一个对象结构中

        function 函数名({
        属性名1 : 形参1,
        属性名2 : 形参2,
        ...
        }){...}

        ②在调用函数时,所有实参也必须放在相同结构的对象中,整体传入

        函数名({
        属性名1 : 实参1,
        属性名2 : 实参2,
        ...
        })

      3. 参数解构原理:参数解构,其实就是对象解构在函数传参时的应用而已

      4. 参数解构优点:①无论有多少参数不确定,都不会报语法错误,如果解构时,实参列表中缺少参数,则函数中对应的形参变量获得undefined ②实参列表和形参列表只要名称对应即可,没有必然顺序,参数解构其实就是对象解构在函数使用时的应用而已

  • class

    1. 定义:集中存储一个类型的构造函数和原型对象的程序结构,即简化版的面向对象(封装、继承、集中存储一个类型的构造函数和原型对象的程序结构,即简化版的面向对象(封装、继承、多态)多态)

    2. class的封装:

      ①用class{}包裹之前的构造函数和原型对象方法

      ②构造函数名提升为整个class的类型名,不仅仅只属于构造函数,今后所有的构造函数必须更名为constructor,构造函数中的内容和旧的js写法一致

      ③从此class中的原型对象方法,无需再添加类型名.prototype 前缀 以及“ =function ” 也可以省略。凡是放在class中的方法,默认都是放在原型对象里的

      ④class内的构造函数和多个原型对象方法之间不用加 , 或 ; 分隔

      ⑤class的使用和旧js中构造函数和原型对象方法的使用完全一样。存储结构完全一样的。——class其实就是"新瓶装旧酒"

    3. 共有属性问题:在class中强烈不推荐共有属性

      注意:

      ①直接放在class中的属性,绝不是共有属性,而会成为将来每个子对象的自有属性 ②写死在构造函数里的属性,更不是共有属性。所有构造函数里的属性,将来一律都会成为每个孩子的自有属性

      ③其实可以通过特殊的方式添加共有属性,但是强烈不推荐

    4. 访问器属性:保护this,访问器只提供保护功能,不实际存属性值,保护的能力没有分辨能力;在class中保护将来的子对象的写法同普通构造函数时的保护方式一样。只不过访问器属性可以简写

    5. class间的继承:

      使用:两种类型间有相同的属性结构和方法定义时使用

      使用class继承:①创建一个父类型,父类型构造函数中,保存多个子类型相同部分的属性结构定义,父类型class中,保存多个子类型相同的部分的方法定义

      ②创建子类型class,让子类型继承父类型,子类型class用"extends 父类型",取代 Object.setPrototypeOf(xxx, xxx),让子类型继承父类型。在子类型构造函数中调用父类型构造函数,两个构造函数共同创造出将来的子对象——将来的子对象中同时包含父类型和子类型中构造函数的属性定义

      注意:如何在子类型构造函数中调用父类型构造函数?

      ①extends附赠了一个关键词super,super指向父类型的构造函数。调用super,就等效于调用父类型的构造函数了 注意:super()必须写在自己扩展的属性之前

    • 数据库:数据库是按照一定的形式来组织、存储数据,目的是为了操作数据的增删改查

    • 数据库历史:网状数据库、层次型数据库、关系型数据库、非关系型数据库

    • 数据库存储:内存/特定文件/第三方服务器/数据库服务器

    • 关系型数据库逻辑结构:Server(数据库服务器)/Database(数据库)/Table(数据表)/Row(行)/Column(列)

    • 常见的关系型数据库:①SQLit②MySQL③SQL Server④Oracle

    • 计算机存储字符:

    1. 存储英文字符:ASCII、Latin-1

    2. 存储中文字符:GB2312、GBK、BIG5、Unicode

    3. 中文乱码:中文乱码产生的原因:mysql默认使用Latin-1编码

      解决:①SQL脚本文件另存为的编码为utf8②客户端连接服务器端使用的编码(set names utf8)③服务器端创建数据库使用的编码(charset=utf8)

    • MySQL数据库使用:

    1. 服务器:mysql目录下的bin文件mysql.exe(负责存储和维护数据,启动文件确保3306端口不被占用)

    2. 客户端:mysql目录下的bin文件mysql.exe(负责向数据库发起增删改查)

    3. 客户端连接服务器端:mysql.exe -h127.0.0.1 -P3306 -uroot -p (简写:mysql -uroot -proot)

      -h:host 主机(ip地址/域名)

      -P:port 端口

      -u:user 用户名

      -p:password 密码

    4. 常用命令:show databases;查看数据库名 use 数据库名;进入数据库 show tables;查看数据表 desc 表名;查看表结构 quit;退出

学习心得:

今天学习了ES6的解构和class两个点都有些多,不过是在之前的知识上进行扩充,还是能理解,就是有些有关面向对象的知识有点绕,不是很好去记忆,然后就是进行学习了MySQL,比较起来数据库还是要稍微好理解可以一边操作一边记忆。

标签

评论

this is is footer