ES6
var、let、const
var

const(对于普通类型不可改变值,引用类型不可改变栈里的地址)

let
let没有声明提升,声明可以不赋值,暂时性死区,块级作用域,不能重复赋值
继承
父类可以派生出子类,子类具备父类的属性和方法,子类也可以添加自己的属性和方法。通过关键字class 子类 extends 父类 和 super来实现继承


原型、原型链、原型对象
原型对象:类的一个属性,prototype, 用来存储所有实例对象共享的属性和方法。
原型:每一个实例化对象创建的时候,除了开辟属性空间,还会创建一个_proto_属性,这个属性指向该类的原型对象,所以实例化对象就可以访问原型对象上的属性和方法。
原型链:如果一个实例化对象想要找到某个属性/方法,先在自身身上找该属性和方法,如果找不到就是该类的原型对象上找(由于该类的原型对象也是一个对象,所以也会有_proto_属性),如果还找不到,就会去原型的原型上找,这样形成一个链式结构,把这个链式结构成为原型链。
检查一个属性/方法是不是自身的,可以通过 实例化对象.hasOwnProperty('属性名/方法名') 为true就存在,false就是在该类的原型对象上。
深浅拷贝
对于引用类型(对象,数组)

![]()
对象浅拷贝的解决方法
法一:
缺点:当数据类型为function/数据值为undefined,无法进行拷贝


改变


法二:
缺点:只能深拷贝一级属性,引用类型就是浅拷贝


法三:
缺点(同assign()):只能深拷贝一级属性,引用类型就是浅拷贝


法四:
递归(完美的解决方法)


数组浅拷贝的解决方法
法一:
缺点:当数据类型为function/数据值为undefined,无法进行拷贝


法二、三同上:
缺点:只能深拷贝一级属性,引用类型就是浅拷贝


法四:


解构赋值

---------------------------------------------------------------------

Promise
promise有三个状态,pending(new promise被创建),fufiled(执行resolve函数),rejected(执行reject函数) ---------(pending->fufiled,pending->rejected,但fufiled,rejected不能相互转换,并且promise不受外界影响一旦状态改变,就不会在变)
-------------------------------------------------------------------------
不管是.then还是.catch都是从pending状态->fulfiled状态

只有抛出异常才会从pending->rejected


-----------------------------------------------------------------------------
方法
promise.all(参数是一个数组,数组的值是promise对象,只有都成功了,才会一起返回,走.then,如果有一个出错,就会走.catch)


promise.allSettled
用于多个promise实例,不管成功还是失败,只要promise的状态确定了,就一起返回


promise.any 谁先成功返回谁

promise.race 不管成功与失败,当其中一个先执行完毕,就先返回谁

------------------------------------------------------------------------------

-----------------------------------------------------------------

新增方法includes
新增方法sort

新增方法 filter

方法 forEach(ES3)

新增方法 map

新增方法reduce
有初始值

无初始值

reduce的用法
用法一:
对数组求和(有初始值和没有都行)

用法二:
求出数组中的最大值

用法三:
去重

用法四:
将二维数组变成一维数组

三维数组变成一维数组

闭包---Closure



-----------------------------------------------------------------------------------------
闭包的两种形式(第一种方式可以在函数外部使用函数内部的局部变量,但不能改变局部变量,实现了数据的私有,并且使得局部变量变成全局变量,局部变量不会被销毁)

![]()
闭包的应用:统计函数的调用次数,每调用一次就自加1

instanceof 和 typeof
instanceof 判断数组和对象的数据类型,如果为数组就是true, 如果是不是数组就是false
instanceof 原理:原型链 (也就是说在对象的原型上能找到类的prototype,那么返回值就是true,否则返回false)

箭头函数
箭头函数与普通函数的区别
防抖、节流
防抖:

节流:

浙公网安备 33010602011771号