ES6 新增特性有那些?

ES6新增了许多新特性,不是因为面试经常会问才需要会它,个人认为里面的许多方法特别简单

下面是我整理的一些比较常用的新增特性

一、新增数据类型

Symbol

1.特性

  • Symbol()函数,返回一个symbol类型的值,该类型具有静态属性和静态方法。
  • 每个Symbol()返回的symbol值都是唯一的,这是该数据类型仅有的目的,可以作为对象属性的标识符使用
  • Symbol()存在原型链Symbol.prototype
  • 不支持语法:"new Symbol()"创建对象
  • 不支持将一个 symbol 值转换为一个 number。
  • 不支持将一个字符隐式创建,例如: symbol('a') + '1231'

2.总结

  • Symbol用法很强大普遍,es5私有api中已经有很多的使用,例如:常用的String.prototype.split()
  • Symbol创建的值唯一。
  • 替代传统的常量定义保证唯一并且不被串改将是非常友好的。
  • 定义私有属性将会非常方便。

Set

Set是类似于数组,但成员的值都是唯一的数据结构。//Set(3) {"一月", "二月", "三月"}

基本使用

//添加数据
monthSets.add("一月");
monthSets.add("二月").add("三月");

console.log(monthSets); //Set(3) {"一月", "二月", "三月"}

//遍历集合Set
//forEach():使用回调函数遍历每个成员
monthSets.forEach((item) => console.log(item)); //一月 二月  三月

//for...of:直接遍历每个成员
for (const item of monthSets) {
  console.log(item); //一月 二月  三月
}

//删除数据
monthSets.delete("二月");
console.log(monthSets); // Set(2) {"一月", "三月"}
monthSets.clear(); //
console.log(monthSets); // Set(0) {}

常见应用

let monthSets = new Set(["一月", "二月", "三月"]);

//一、快速判断数据元素是否存在
monthSets.has("一月"); //true

//二、统计数据元素个数
monthSets.size; //3
console.log(monthSets.size); //3

//三、数组去重
let arr = [1, 2, 3, 2, 3, 4, 5];
let set = new Set(arr);
console.log(set); // {1, 2, 3, 4, 5}

//四、合并去重
let arr = [1, 2, 3];
let arr2 = [2, 3, 4];
let set = new Set([...arr, ...arr2]);
console.log(set); // {1, 2, 3, 4}

WeakSet

WeakSet与Set类似,也是不重复的值的集合,但WeakSet的成员只能是对象。WeakSet引用的对象都是弱引用,如果其他对象不再引用该对象,那么垃圾回收机制就会自动回收这些对象所占用的内存,不考虑该对象还存在于WeakSet之中。

Map

Map是一种键值对集合,与对象类似,但Object只支持“字符串:值”,而Map支持“各种类型的值:值”,map给我们提供了更合适的“键值对”数据结构。

基本使用

//定义
let map = new Map();

//添加数据
let address = { address: "江苏" };
map.set("name", "ES6");
map.set(27, "年龄信息");
map.set(address, "地址信息");

console.log(map); //{"name" => "ES6", 27 => "年龄信息", {…} => "地址信息"}

//获取数据
let name = map.get("name");
let age = map.get(27);
let addressObj = map.get(address);

console.log(name, age, addressObj);

//获取成员数量
console.log(map.size);  //3

//判断是否指定key成员
console.log(map.has("name")); //true

 

 

Map的遍历

map通常可以用forEach和for...of的方式进行遍历。

WeakMap

WeakMap与Map类似,也是用来生成键值对的集合。但WeakMap只接受对象作为键名,并且键名所指向的对象,属于弱引用对象。

二、const、let声明变量方式

  • 有块级作用域
  • 不会声明提升

三、模板字符串

四、对象解构赋值

五、延展运算符(...)

六、对象字面量增强

七、Class类的支持

八、Promise异步对象

九、模块import、export

十、数组、对象新增方法

Array

  • filter
array.filter(item => {  return '条件'})  // 返回过滤后的数组
  • some
array.some(item => {  return '条件'})  // 如果数组中一旦有满足条件的成员,返回true,否则返回false。
  • every
array.every(item => {  return '条件'})  // 如果数组中所有成员满足条件,返回true,否则返回false。
  • map
array.map(item => {  return '包装后的新成员'})  // 返回新包装的成员组成的新数组。
  • from
Array.from('类数组')  // 会将一个类数组结构数据转换成数组。比如数组去重 Array.from(new Set(array))
  • flat
flat用于将嵌套的数组“拉平”。该方法返回一个新数组,对原数据没有影响。
[1, 2, [3, 4]].flat()  // [1, 2, 3, 4]
  • of
Array(3) // [,,]

Array.of(3) // [3]
  • find、findIndex、includes...

object

  • Object.assign
Object.assign(target,obj1,obj2,...)  
// 可以用来合并对象,将第二个参数obj1以及后边的对象都合并在target中。
   属性名相同,后边的会覆盖前边的,target中没有的属性,则会新增。
   最后返回合并后的对象。
// assign方法只是浅拷贝。

 

如果想知道更多直接去ES6官网查看就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值