ESp6特性

212 阅读4分钟
  • (1) let 作用域只存在当前的代码块,不存在变量升级,如果代码块中声明了彪了不可以使用父级变量,不能重复命名,使用了块级作用域,const声明只读常量,js前端顶级对象是Window
  • (2)数组的解构赋值,可以通过对应方式进行赋值,例如 let [a, [b], d] = [1, [2, 3], 4];,且可以设置默认值,对象也可以通过同样的方式进行赋值,可以直接交换变量值
  • (3)字符串的扩展: 字符的Unicode表示法,codePointAt()f返回字符的UTF-16编码,包括站位4个字节的字符,fromCodePoint()通过UTF-16编码转换成字符,字符遍历器Iterator处理4个字节,at()获取位置所在的字符,normalize()标准化,includes(),startsWith(),endsWith(),repeat()原字符串重复多次
  • 模板字符串,String.raw()转译
  • (4)正则表达式的拓展
  • (5)数值的拓展,二进制和8进制的结构,Number.isFinite()检测是否为有限数,Number.isNaN()
  • Number.parseInt,NumberFloat数据转化,Number.isInteger()是否为整体,Number.EPSILON设置极小的常量,isSafeInteger安全整数,-2^53-2^53 ,Math.trunc()获取整数部分,Math.sign判断是正数负数和0,Math.cbrt()数的梨立方根,Math.clz32()判断32位前面有多少个0,Math.imul()乘法,Math.expm1()
  • (6)数组扩张,Array.from()将类数组和可遍历的对象转换成数组,扩展运算符(...)也可以将某些数据结构转为数组,Array.of()转数据,Array.prototype.copyWithin(target, start = 0, end = this.length)将指定位置的成员复制到指定位置,find,findIndex找到符合回调函数的第一个数值,fill修改数组的值,keys,values,entrie返回数组的key,value,键值对,[].includes()包含第一个参数值,第二个参数从哪里开始,ES6中将空位转成undefined,
  • (7)函数的扩展:允许使用默认值,rest参数(…),Generator函数的结果也可以用…转换,name函数名称,
  • (8) symbol 原型类型,Symbol.for可以通过key来定义相同的对象,Symbol.keyFor()获取key
  • Symbol.isConcatSpreadable指定使用concat方法是否可以展开Symble.species对象实例化的时候会调用当前方法
  • (9)set数据结构不可重复的数组,weakset不可重复的对象数组,Map 字典表,size,set
  • Get,has,delete,weakest只接受对象作为键值
  • (10)proxy拦截器:Reflect反射:把Object对象的方法全部定义到了Reflect上 Reflect.apply(target,thisArg,args) Reflect.construct(target,args) Reflect.get(target,name,receiver) Reflect.set(target,name,value,receiver) Reflect.defineProperty(target,name,desc) Reflect.deleteProperty(target,name) Reflect.has(target,name) Reflect.ownKeys(target) Reflect.isExtensible(target) Reflect.preventExtensions(target) Reflect.getOwnPropertyDescriptor(target, name) Reflect.getPrototypeOf(target) Reflect.setPrototypeOf(target, prototype)
  • (11)遍历器和for-of 继承Iterator接口的数据结构都可以使用for-of,或者部署了itertor也可以遍历的,数据结构中只要有Symbol.iterator这个属性就是可以遍历的,原始就具备Iterator接口的数据:数组,类数组就够(arguments),set和Map接口,并且通过Symbol。Iterator属性实现的,
  • 默认调用的几种方式:1、数据和Set解构赋值,2、扩展运算符(…),3、yield*4、Promise.all,Promise.race,Array.from
  • (12)Generator迭代器,next带参数指定为上一个返回值的结果,传递的值可以保存,正常情况下Generator不能当做一个构造函数,不能通过new实例化,只能继承原型generator的原型不能继承Generator的属性。
  • (13)promise Promise.all() Promise.race()
  • (14) asyncawait ( ES8)
  • (15) class extends继承,super父类,只有调用过super父类的构造函数,才能使用this,
  • 1、es5继承的原理B.prototype___proto__ = A.prototype
  • 2、B.proto= A //这个是特有的属性,类似于 A.call(this);继承A上的方法,Object.create(A.prototype)这个方法的实现,继承既做了一个父对象的实例
  • Super当做一个函数使用是指向A的原型,不可以访问A实例上的对象,,通过super调用父类的方法时,super会绑定子类的this。
  • Class可以继承原型类
  • ES6规定Object构造函数会忽略参数。
  • Static不可以被实例继承
  • New.target 判断当前对象是不是有构造函数构造的对象,如果有继承关系返回最外层的对象。
  • Mix多继承
  • (16)Decoratorl类修饰符,给修饰对象的原型对象上加上对应的属性和方法
  • (17)module模块化,Export和Import Export中必须和变量一一对应,接口是对应的值是动态绑定关系 Import静态执行,不能在使用表达式,变量和if结构,使用*号全部加载, Export default默认返回值,import可以随便设置,不需要使用大括号,也可以作用于标准化名称上 Export和import可以复用 Module加载的失职是值的引用,指向同一个地址,export语句输出的接口,与其对应的值是动态绑定关系,加载的为同一个对象,变量值可以共用 循环加载:安装顺序执行,正在执行的或者已经执行的,不做重复加载。 模块化常量: