小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
大家好,我是不孤独的孤独,今天整理的是ES6的的一些常见知识问答,方便大家在跳槽时候,拉出来看看这些问题。
module、export、import的作用
module、export、import是ES6用来统一前端模块化方案的设计思路和实现方案, 整合规范了浏览器/服务端的模块化方法,用来取代传统的AMD/CMD、requireJS、seaJS、commondJS等等一系列前端模块不同的实现方案,使前端模块化更加统一规范,JS也能更加能实现大型的应用程序开发。
import引入的模块是静态加载(编译阶段加载)而不是动态加载(运行时加载)。
Symbol的作用
Symbol是ES6引入的原始数据类型,所有Symbol()生成的值都是独一无二的,可以从根本上解决对象属性太多导致属性名冲突覆盖的问题。对象中Symbol()属性不能被for...in遍历,但是也不是私有属性。
Set的作用
Set是ES6引入的一种类似Array的新的数据结构,Set实例的成员类似于数组item成员,区别是Set实例的成员都是唯一,不重复的。这个特性可以轻松地实现数组去重。
Map的作用
Map是ES6引入的一种类似Object的新的数据结构,Map可以理解为是Object的超集,打破了以传统键值对形式定义对象,对象的key不再局限于字符串,也可以是Object,可以更加全面的描述对象的属性。
Proxy的作用
Proxy是ES6新增的一个构造函数,用来改变JS默认的一些语言行为,包括拦截默认的get/set等底层方法,使得JS的使用自由度更高,可以最大限度的满足开发者的需求。比如通过拦截对象的get/set方法,可以轻松地定制自己想要的key或者value。
Reflect的作用
Reflect是ES6引入的一个新的对象,作用主要是:
-
将原生的一些零散分布在Object、Function或者全局函数里的方法(如apply、delete、get、set等等),统一整合到Reflect上,这样可以更加方便更加统一的管理一些原生API。
-
因为Proxy可以改写默认的原生API,如果一旦原生API别改写可能就找不到了,所以Reflect也可以起到备份原生API的作用,使得即使原生API被改写了之后,也可以在被改写之后的API用上默认的API。
for...in 和for...of的区别
ES6统一了遍历标准,制定了可遍历对象,就是利用for...of进行遍历,部署了载了Iterator接口的对象(可遍历对象)都可以通过for...of去遍历,而for...in仅仅可以遍历对象。