es,js,ts三者有什么关系?

发布网友

我来回答

1个回答

热心网友

ES6 是一种 JS 的规范化, JS 是 ES 的拓展。

TS 是一种 JS 的类型补充。

Web 中的 JS = ES + Web API ( DOM + BOM )

Node 中的 JS = ES + Node API ( fs + Net + etc )

TS = JS + 类型系统

如下图 3.1

ES6 中推出了两个新的关键字 let 、const 。

因为 var 存在变量提升,所以在定义之前调用变量不会报错,而是会得到一个 undefined 。这在很多编码过程中看来,是不合理的,因为变量先定义后使用,才是符合正常的思维逻辑的。故而推出了两个关键字 let 、const 。

两者都没有变量提升,因为闭包机制, 所以只在声明位置所属的块作用域内生效。

Proxy  可以理解为* , *, 可以修改对象原本的方法。可以通过构造函数的方法使用,也可以在对象内部定义为  Proxy  属性的方式来调用。

Proxy 两种使用方法

Proxy  传入两个参数,都是对象格式。  target  是被拦截的对象, handler  中盛放了拦截 target  的方法。如果被拦截的对象是一个空对象,那么在使用构造函数调用时候,可以用构造对象调用拦截方法会产生相同效果。

target为空对象情况

Reflect

Reflect  是一种新的  API  ,将Object对象的属于语言内部的方法放到 Reflect  对象上,即从  Reflect  对象上拿  Object  对象内部方法。

将用老  Object  方法报错的情况,改为返回  false 。

让 Object  操作变成函数行为。

Reflect  和  Proxy  有着一样的方法,两者可以相辅相成 。

图片引自阮一峰 ES6

这样的操作使得拦截操作更为合理,把拦截的操作交给  Reflect  ,而  Proxy  的功能主要为输出日志。

Set   不重复集合。

Symbol 具有唯一性,可以作为对象的 key ,避免重复。

生成器 Generator : 内部可以通过 yeld 来分步执行。返回一个对象 { value, done}。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com