Symbol类型:
ES5中包含5种原始类型:字符串、数字、布尔值、null和undefined。ES6引入了第6种基本数据类型——Symbol
ES6引入Symbol的原因:
ES5的对象属性名都是字符串,很容易造成属性名冲突。
比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突。
如果有一种机制,保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突。
用法:
直接使用Symbol()创建新的symbol类型,并用一个可选的字符串作为其描述。
注意,Symbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。
Map 和 Set:
Map 和 Set 是 ES6 新增的两个数据类型
都是属于内置构造函数
使用 new 的方式来实例化使用
const s = new Set()
console.log(s)
就是一个数据集合
我们可以在 new 的时候直接向内部添加数据
set常用方法和属性:
size : 属性 用来获取该数据结构中有多少数据的
add : 用来向该数据类型中追加数据
delete : 是删除该数据结构中的某一个数据
clear : 清空数据结构中的所有数据
forEach : 用来遍历 Set 数据结构的方法
获取 Set 结构里面的数据需要借助一个 ... 展开运算符
Set 数据类型特点 :set不允许存储重复的数据
示例-数组去重
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
let set = new Set(array);
console.log(set);
// => Set {1, 2, 3, 4, 5}
map:
是一个数据集合,是一个很类似于 对象 的数据集合
const m = new Map()
console.log(m)
size : 用来获取该数据类型中数据的个数
delete : 用来删除该数据集合中的某一个数据
set : 用来向该数据集合中添加数据使用
get : 用来获取该数据集合中的某一个数据
clear : 清除数据集合中的所有数据
has : 用来判断数据集合中是否存在某一个数据
for ... of:
for-of 可以遍历数组,字符串和Map, 不能遍历对象
遍历数组,访问数组元素
遍历字符串,访问字符串字符元素
模块化语法 import / export:
模块化的理解:
什么是模块?
将一个复杂的程序依据一定的规则封装成几个块,
块的内部数据是私有的, 只是向外部暴露一些接口,与外部其它模块通信。
前端模块化开发中:一个js文件就是一个模块,在js文件模块中定义的数据是私有的, 可以向外部暴露数据和方法,其它js文件模块可以引入暴露的方法数据进行使用。