9.22 冯娜

学习日志
一、解构:

1、什么是解构:将一个大的对象或数组中集中存储的成员中的个别成员,取出来单独使用。

2、为什么要使用解构:将来从服务器端返回的对象或数组可能很复杂。

(1)频繁使用数组中某个元素时,总要”数组名[下标]”。

(2)频繁使用对象中的成员时,总要”对象.方法名/属性名”。

3、什么时候使用解构:

凡是获得结构嵌套非常复杂的对象,都要先解构成多个小的成员,再分别单独使用。

4、使用解构:

(1)数组解构:提取出索引数组中指定位置的元素,保存在单独的变量中独立使用。

​ a、什么时候使用:只要服务端返回的是一个巨大的数组,而我们只想单独使用数组中的某几个元素时。

​ b、使用数组解构:var[变量1,变量2,...]=数组

​ 下标:0

​ 案例:

var date=[2020,9,20]
var [year,month,day]=date;
console.log(今天是${year}年${month}月${day}日)
//练习:不声明第三个变量,交换两个变量的值
// var [a,b]=[b,c]
//对象解构
var {name:name,sex:sex}={
name:"cg",
sex:"man"
}
//{属性名:新的变量名}
//属性名和对象本身的属性名是对应的
//解构出来的是新的变量名
console.log(name)
console.log(sex)

(2)对象解构:仅提取出复杂对象中的个别成员属性或方法,保存在变量中,单独使用。

a、什么时候使用:当对象结构复杂,而我们希望分别使用对象中的成员时。

b、使用对象解构:var{属性名1:变量1,属性名2:变量2,...}=对象;

​ 简写:若属性名和变量名相同,只写一个即可。

c、原理:同时声明多个变量,去对象中查找相同属性名的属性值,赋值给对应位置的 变量,每个变量中都获得了自己对应属性名的属性值。将来每个变量都可 以单独使用。

案例:

var user = {
uid: 1001,
uname: 'dingding',
uage: 25,
login: function() {
console.log(登录...)
},
logout: function() {
console.log(注销...)
},
signup: function() {
console.log(注册...)
},
changePwd: function() {
console.log(修改密码...)
}
}
// 将来都是从一个大的对象中先解构出想用的小部分,再单独使用
// 只想用uname和logout
// var uname=user.uname;
// var logout=user.logout;
// :前的属性名用来配对
// :后才是要接住属性值的变量
// var {uname:uname, logout:logout}=user;
// 简写:当:前后的属性名和变量名相同时,其实可以只写一个
var { uname, logout } = user
// 但是,虽然名字只写了一遍,但是一个名字两用: 即用作配对,又当将来的变量名!
console.log(用户名:${uname})
logout()

(3)参数解构:将所有的参数都定义在一个对象结构中,再传参,调用函数传参时,也是将所有实参值都放在一个对象中传入。

a、什么时候使用:当一个函数,多个形参变量都不确定将来有没有值时,但是又要求传入的实参值和形参变量必须一一对应时,就要用参数解构。

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

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

}){...}

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

d、参数解构原理:对象解构在函数传参时的应用。

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

二、class

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

2、为什么使用class:因为旧的js中,要定义一个类型,构造函数和原型对象方法是要分着写的。不符合封装的要求。

3、什么时候使用class:只要创建一种新的类型,不要先创建构造函数,也不要分着写原型对象方法,而是先创建一个class,然后将类型的所有成员集中定义在class中,用class来包裹原来的构造函数和原型对象方法。

4、使用class:

(1)class的封装:

(2)共有属性问题:

(3)访问器属性:

(4)class间的继承:

三、promise:

1、问题:实际开发中,有时需要多个异步任务必须按顺序执行。如果单纯顺序调用两个异步函数,是无法保证顺序执行的。异步函数谁也不等谁。

2、解决方案:回调函数

3、什么是promise:Promise是一个构造函数,它跟JS中的Date、Array等构造函数类似,都是使用new操作符实例化之后就可以通过传参和调用方法的形式来完成某些特定的功能。Promise是专门用来实现多个异步函数,必须先后顺序执行的技术。

4、为什么使用promise:避免callback hell(回调地狱)。

5、使用promise

四、MySQL:

1、什么时数据库:

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

2、数据的存储形式:内存/特定文件/第三方服务器/数据库服务器。

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

4、使用MySQL:

(1)MySQL部署结构:服务器端、客户端

(2)使用客户端连接服务器端

(3)MySQL常用的管理命令:

a、show databases;查看数据库名

b、use数据库名;进入数据库

c、show tables;查看数据表

d、desc表名;查看结构

e、quit;退出连接

五、SQL:

1、什么是SQL:SQL(Structured Query Language),结构化查询语言,用于操作关系型数据库服务器,对数据执行增删改查。

2、执行方式:

(1)交互模式:客户端输入一行,点击回车,服务器执行一行,适用于临时性的查看数据。

(2)脚本模式:客户端把要执行的命令编写在一个脚本文件中,一次性的提交给服务器执行,适用于批量的操作数据。

3、SQL语法规范:

(1)每条SQL命令必须以英文的分号作为结束,一条命令可以跨越多行。

(2)假如某一条命令出现语法规范,则这条命令以及后边所有的命令不再执行。

(3)SQL不区分大小写,习惯上数据库关键字用大写,非关键字用小写,项目在上线后,如果关键字小写可能会造成错误。

(4)SQL命令中可以使用单行注释(#...)和多行注释(/*… */),注释的内容不会被服务器执行。

4、SQL命令:

(1)DDL:定义数据:create(创建)、drop(删除)、alter(修改数据库)

(2)DML:操作数据:insert(插入数据)、update(更新数据)、delete(删除数据)

(3)DQL:查询数据:select(查询数据)

(4)DCL:控制用户权限:grant(授权)、revoke(收回权限)

今天早上有好多东西没有听懂,,,哎,,,

标签

评论

this is is footer