20200922岳浩天

知识总结

解构

数组解构

var date=[2019,5,6];
var [y,m,d]=date;
y=2019, m=5, d=6
提示:数组解构其实就是下标对下标的赋值

对象解构
var{ 属性名1 : 变量1 , 属性名2 : 变量2 ,...}=对象;
先将要保存对象中成员的变量装扮成对象的样子(同时写属性名和变量才能配对),再用等号从对象中提取出相同属性名的成员值保存到变量中,等号左边相同属性名的变量,会获得对象中相同属性名的属性值或方法,对象解构其实就是属性名对属性名的赋值
变量1=对象.属性名1
变量2=对象.属性名2
简写形式:如果属性名和变量名相同,只写一个即可
var {属性名1, 属性名2,…}=对象
提示:一个名字两用,既当做配对的属性名,又当做将来单独使用的变量名
var {sname:sname, signin:signin}=lilei
=>
var {sname, signin}=lilei

参数解构

使用参数解构(两步)

1>在定义函数时,将所有形参放在一个对象结构中
function 函数名({
属性名1 : 形参1,
属性名2 : 形参2,
...
}){...}
通常用于配对的属性名和形参变量名都是相同。所以,形参对象结构中,每个形参变量只写一个名字即可。此时是一个名字两用 : 既配对,又当形参变量名
注意:虽然定义函数时,属性名和形参变量可以合为一个名字,但是调用时,属性名和实参值必须都要写完整
function 函数名({
属性形参名1,
属性形参名2,
...
}){...}
如果属性名和形参变量合为一个之后,如果给形参提供默认值,就可用ES6的参数默认值简写
2>在调用函数时,所有实参也必须放在相同结构的对象中,整体传入
函数名({
属性名1 : 实参1,
属性名2 : 实参2,
...
})
注意:一旦定义函数时,采用了对象解构的形式,则调用函数时,必须传入一个对象结构,至少是一个{}
形参1=实参值1 , 形参2=实参值2 , ...
优点
无论哪个实参没有,函数执行都不会出错。大不了,如果解构不成功,某个实参值获得的是undefined。也不会报错

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

class

  1. 用class{}包裹之前的构造函数和原型对象方法
  2. 构造函数名提升为整个class的类型名,不仅仅只属于构造函数,今后所有的构造函数必须更名为constructor,构造函数中的内容和旧的js写法一致
  3. 从此class中的原型对象方法,无需再添加类型名.prototype 前缀 以及“ =function ” 也可以省略。凡是放在class中的方法,默认都是放在原型对象里的
  4. class内的构造函数和多个原型对象方法之间不用加 , 或 ; 分隔
  5. class的使用和旧js中构造函数和原型对象方法的使用完全一样。存储结构完全一样的。——class其实就是"新瓶装旧酒"

extends附赠了一个关键词super,super指向父类型的构造函数。调用super,就等效于调用父类型的构造函数了

注意:super()必须写在自己扩展的属性之前

心得

今天es6进入尾声,回顾一下es5,es6,enmmmmm...还得多复习一下。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1