8.4笔记
其他
2021-02-26 03:03:34
阅读次数: 0
ES6
...
扩展运算符,可直接将数组转函数参数,无需使用apply
; 与解构赋值结合使用; 将字符串转数组; 只要有Iterator
接口的都可以使用(调用遍历器接口);
Array.from()
:用于将对象(类似数组(即必须有length属性)和可遍历的对象,包括es6新增的数据结构Set和Map;只要部署了Iterator
接口的数据结构都可转,像字符串)转数组 可接受第二个参数,作用类似数组的map
方法Array. from ( arrayLike, x => x * x) ;
Array. from ( arrayLike) . map ( x => x * x) ;
Array. from ( [ 1 , 2 , 3 ] , ( x) => x * x)
数组方法汇总:https://blog.csdn.net/weixin_40693643/article/details/104424800
ES6允许在大括号里直接写入变量和函数,作为对象的属性和方法
ES6新增Object.assign()
,忽略enumerable
为false
的属性,只拷贝对象自身的可枚举的属性; 注意: 它是浅拷贝;它对于嵌套对象的处理方式是替换而不是添加;
ES6新增了关键字super
,指向当前对象的原型对象
ES2020引入了链判断运算符?.
直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined
ES2020引入了Null判断运算符??
,它的行为类似||,但是只有运算符左侧的值为null或undefined时,才会返回右侧的值
Object.is()
比较两个值是否严格相等+ 0 === - 0
NaN === NaN
Object. is ( + 0 , - 0 )
Object. is ( NaN , NaN )
ES2017引入了Object.getOwnPropertyDescriptors()
方法,返回指定对象所有自身属性(非继承属性)的描述对象
ES5引入了Object.keys
方法,返回一个数组,参数是对象自身( 不含继承)的所有可遍历属性的键名; ES7引入了跟Object.keys
配套的Object.values
和Object.entries
,作为遍历一个对象的补充手段,供for ... of
循环使用; Object.fromEntries()
方法是Object.entries()
的逆操作,用于将一个键值对数组转为对象(特别适合将Map结构转为对象) 配合URLSearchParams
对象,将查询字符串转为对象
ES6引入了一种原始数据类型Symbol
,表示独一无二的值。ES6标准入门 第3版 读书笔记之Symbol
ES6提供了数据结构Set
(类似于数组,成员的值是唯一的); ES6提供了数据结构Map
,类似于对象,也是键值对的集合,其中,各种类型的值都可以当作键;ES6标准入门 第3版 读书笔记之Set和Map 数据结构
ES6原生提供了Proxy构造函数,用来生成Proxy实例 var proxy = new Proxy(target, handler);
new Proxy()
表示生成一个Proxy
实例 target
参数:要拦截的目标对象 handler
参数:用来定制拦截行为
Reflect
ES6为了操作对象而提供的新API
将Object
对象的一些明显属于语言内部的方法(如Object.defineProperty
),放到Reflect
对象上;
修改某些Object
方法的返回结果,让其变得更合理;
让Object
操作都变成函数行为;某些object操作是命令式的;
'assign' in Object
Reflect. has ( Object, 'assign' )
Reflect
对象的方法与Proxy
对象的方法一一对应
ES6将Promise
写入了语言标准;ES6——Promise对象总结
Iterator
遍历器,作用:
为各种数据结构提供统一,简便的访问接口
使得数据结构的成员能够按某种次序排列
ES6创造了一种新的遍历命令for ... of
循环,Iterator
接口主要供for .. of
使用; for ... of
循环可以自动遍历Generator
函数运行时生成的Iterator
对象,不需要调用next
方法
ES6提供了一种异步编程的解决方案Generator
示例代码:function * helloWorldGenerator ( ) {
yield 'hello' ;
yield 'world' ;
return 'ending' ;
}
var hw = helloWorldGenerator ( ) ;
hw. next ( )
hw. next ( )
hw. next ( )
hw. next ( )
Generator
函数内部可以部署错误处理代码,捕获函数体外抛出的错误function * gen ( x) {
try {
var y = yield x + 2 ;
} catch ( e ) {
console. log ( e) ;
}
return y;
}
var g = gen ( 1 ) ;
g. next ( ) ;
g. throw ( '出错了' ) ;
Thunk
函数是自动执行Generator
函数的一种方法;任何函数,只要参数有回调函数,就能写成Thunk
函数的形式; Thunk
函数可以用于Generator
函数的自动流程管理
co
模块也是用于Generator
函数的自动执行;它可以让你不用编写Generator
函数的执行器;var gen = function * ( ) {
var f1 = yield readFile ( '/etc/fstab' ) ;
var f2 = yield readFile ( '/etc/shells' ) ;
console. log ( f1. toString ( ) ) ;
console. log ( f2. toString ( ) ) ;
} ;
var co = require ( 'co' ) ;
co ( gen) ;
co ( gen) . then ( function ( ) {
console. log ( 'Generator 函数执行完成' ) ;
} ) ;
ES2017引入了async
函数(Generator函数的语法糖),使得异步操作变得更加方便; 将Generator
函数的星号*
替换为async
,将yield
替换为await
;
内置执行器,不像Generator函数,需要调用next
方法,或者使用co
模块;
返回值是Promise
对象
ES6引入了Class类这个概念 注意:类和模块内部,默认严格模式;类不存在变量提升;name属性总是返回紧跟在class关键字后面的类名;如果在某方法前加上星号*
,就表示该方法是一个Generator
函数;类内部的this
默认指向类的实例;
ES6为new
命令引入了一个new.target
属性。该属性一般用于构造函数中,返回new命令作用于哪个构造函数。如果构造函数不是通过new命令或Reflect.construct()调用的,new.target就会返回undefined;
Class的继承:
Class可以通过extends
关键字实现继承;
Object.getPrototypeOf
方法可以用来从子类上获取父类(可以判断一个类是否继承另一个类)
super
关键字:作为函数调用时,代表父类的构造函数(ES6要求子类的构造函数必须执行一次super
函数);作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类;
转载自 blog.csdn.net/weixin_40693643/article/details/107780461