ES6总结(极简总结)

一、作用域

(1)分为全局作用域、块作用域、函数作用域、动态作用域。当变量,或者想的得到的值在函数内部时候,这个时候可以使用return或者闭包的形式拿出来
(2)let和var:let声明的不可以被window输出,let不能重复定义,let不可变量提升
(3)const:const声明的是常量,不能被修改,let,var可以先声明,后赋值,const不可以

二、遍历

(1)for
(2)forEach(不支持break和continue,用来遍历数组)
(3)every(使用return false、return true代替break和continue,用来遍历数组)
(4)for in(是用来专门遍历object,当遍历数组时候,会原型上的东西也会便利出来,尤其是便利dom对象时候)
(5)for of(支持可遍历的进行遍历,可遍历就是有①按照索引存储、②有length属性)

三、Array

(1)伪数组或者说是类数组(collection、nodelist)这种,需要使用数组的方法时候,有2种方法,①使用cal,②使用array.from(伪数组,函数,this)。
(2)array.from的其他用法:创建指定的数组长度,并且使用回调函数决定其填充的值
(3)array.fill:当创建指定的数组长度,并且需要填充时候,我们可以直接使用Arry(长度).fill(填充的值)这个办法创建,是不是感觉比上面(2)更简单呢,但是要体会前面的(2)实际上有一种遍历每个值的性值
(4)arry.of:比前面的2个办法更简单,目的也是一样,初始化数组,举个例子Array.of(2,8,7,4)。
(5)在数组中查找:①Array.filter(),满足要求的都找回来②Array.find()找满足要求的第一个③Array.findIndex()找满足要求的第一个的索引

四、class

(1)明白原型,原型链、知道prototype和__proto__以及实例对象上有constructor指向构造函数
(2)es5中把方法放在原型上,所谓类也是一个函数
(3)es6这样写的(就是es5的语法糖)

class 类名{
constructor(){
//构造函数,这里面写属性
}
方法名(){
	//这个是一个方法,写在构造函数的外面
}
}

五、属性中的get与set

就是想包含属性,进行private
①把保护的属性放在class外面②设置属性让外面读,而这出口是保护的属性③在set中设置属性、并且决定出口返回的内容
六、staic方法
(1)与静态实例向对应的是实例方法,是实例对象调用的
(2)ES5中挂载在this,或者说挂载在构造方法的prototype上面,都是实例方法。都是使用实例对象来调用该方法。而ES6中是写在构造方法中的函数是实例方法。
(3)ES5中静态方法是挂载类上,ES6中使用关键字static就可以
(4)方法依赖对象属性的时候我们使用实例方法,不依赖的时候我们使用static关键字创建静态方法,因为静态方法中是的不到属性的

六、类的继承

ES6中使用关键字extends
七、默认值,箭头函数、处理不确定参数
(1)跳过没有默认值的时候使用undefined,默认值可以是表达式
(2)ES6中已经废弃使用arguments,当查看函数的length,返回的是没有默认值的参数个数
(3)箭头函数,注意使用this的时候,其this指向的是定义的时候的对象,所以不推荐箭头函数中使用this。
(4)箭头函数中,使用{}时候,我们需要手动进行return,因为使用{}的时候,不会自动返回
(5)rest处理不确定的参数,就是使用(…rest)放在参数列表的最后

八、set

(1)和数组很相似,但是不允许存相同的值,本质任然是object
(2)常见的(crud)api:
s.add(item)存 s.delete(item)删 s.clear()清空 s.has(item)查 s.size()长度
s.keys(),s.values(),s.entries(),s.forEach(回调函数)

九、map

(1)存的是key,这key可以是任意值
(2)常见的(crud)api:
m.set(key,value)存 m.delete(key)删 map.clear()清空 map.has(key)查 map.size()长度 map.keys(),map.values(),map.entries(),map.forEach(回调函数)

十、对象拷贝

(1)浅拷贝Object.assign(target,source)

十一、解构赋值

(1)一一对应的关系,可以配合使用…扩展运算符,或者for of
(2)数组:使用[],另一边是可遍历的
(3)对象:使用{},写出一致的变量名,对于嵌套的也是,一层层写下去

十二、Promise

(1)就是让异步变同步
(2)状态pending(undefined)=》fulfilled(resolve)=》rejected(reject)
(3)then是promise原型上的方法,传入的是2个函数,就是分别对应resolve,reject,没有参数的时候会返回一个空的promise。会影响下一个then。
(4)使用静态方法把其他转为promise实例。Promise.resolve(),Promise.reject()。
(5)除了then的其他方法。①catch(回调函数),用来处理错误。②all([promise实例]),用来并行处理priomes

十三、Reflect

(1)我单纯的理解为,这种反射机制就是让你根据条件选择方法。
(2)对于Object
①在对象上新增加属性以及删除
老方法
Object.defineProperty(目标对象,属性,{value:值}
Object.deleteProperty(目标对象,属性)
新方法
Reflect.defineProperty(目标对象,属性,{value:值}
Reflect.deleteProperty(目标对象,属性)
②获取描述符
Reflect.getOwnPropertyDescriptor(目标对象,属性)
③原型对象的查看与修改
查看Reflect.getPrototypeof(实例对象)
修改Reflect.setPrototypeof(实例对象,目标原型)
④查看是否具有某种属性
Reflect.has(属性)
⑤冻结对象,并查询是否可以扩展
老方法Object.freeze(对象)
新方法Reflect.preventExtensions(对象)
查看Reflect.isExtensible(对象)
(2)其他常用的
①查看自生的属性,(排除原型上的)
Reflect.ownkeys(对象)=>返回属性
Reflect.ownkeys(数组)=>返回索引和length
②读属性,改值
Reflect.get(实例,属性)
Reflect.get(数组,索引)
Reflect.set(实例,属性,值)
Reflect.set(数组,索引,值)
③Reflect.apply(被调用的方法,要调用的对象,参数)
④Reflect.construct(需要的类,[])后面是参数

未完待续。。。

猜你喜欢

转载自blog.csdn.net/qq_45549336/article/details/106806686