前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天3分钟,重学ES6-ES12(六)ES7 ES8 新增内容

每天3分钟,重学ES6-ES12(六)ES7 ES8 新增内容

作者头像
虎妞先生
发布2022-10-27 19:59:03
2900
发布2022-10-27 19:59:03
举报

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

每天3分钟,重学ES6-ES12文章汇总

前言

今天开始和大家一起系统的学习ES6+,每天3分钟,用一把斗地主的时间,重学ES6+,今天介绍的是ES7 ES8中新增的内容

ES7 新增

Array Includes

  • 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1。
  • 在ES7中,我们可以通过includes来判断一个数组中是否包含一个指定的元素,根据情况,如果包含则返回 true, 否则返回false。

代码演示

代码语言:javascript
复制
const names = ["abc", "cba", "nba", "mba", NaN]

if (names.indexOf("cba") !== -1) {
  console.log("包含abc元素")
}

// ES7 ES2016
if (names.includes("cba", 2)) {
  console.log("包含abc元素")
}

if (names.indexOf(NaN) !== -1) {
  console.log("包含NaN")
}

if (names.includes(NaN)) {
  console.log("包含NaN")
}

指数(乘方) exponentiation运算符

在ES7之前,计算数字的乘方需要通过 Math.pow 方法来完成。

在ES7中,增加了 ** 运算符,可以对数字来计算乘方。

代码演示

代码语言:javascript
复制
const result1 = Math.pow(3, 3)
// ES7: **
const result2 = 3 ** 3
console.log(result1, result2)

ES8 新增

Object values

之前我们可以通过 Object.keys 获取一个对象所有的key,在ES8中提供了Object.values 来获取所有的value值:

代码演示

代码语言:javascript
复制
const obj = {
  name: "yz",
  age: 24
}

console.log(Object.keys(obj))
// ['name', 'age']
console.log(Object.values(obj))
// ['yz', 24]

// 也可以用于字符串 数组
// 用的非常少
console.log(Object.values(["abc", "cba", "nba"]))
// ['abc', 'cba', 'nba']
console.log(Object.values("abc"))
// ['a', 'b', 'c']

Object entries

通过Object.entries可以获取到一个数组,数组中会存放可枚举属性的键值对数组。

代码演示

代码语言:javascript
复制
const obj = {
  name: "yz",
  age: 18
}

console.log(Object.entries(obj))
const objEntries = Object.entries(obj)
// [['name':'yz'],['age',18]]
objEntries.forEach(item => {
  console.log(item[0], item[1])
})
// name yz
// yz 18
console.log(Object.entries(["abc", "cba", "nba"]))
// [['0':'abc'],['1','cba'],['2','nba']]
console.log(Object.entries("abc"))
// [['0':'a'],['1':'b'],['2':'c']]

String Padding字符串填充

某些字符串我们需要对其进行前后的填充,来实现某种格式化效果

ES8中增加了 padStartpadEnd 方法,分别是对字符串的首尾进行填充的。

padStart()padStart()一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。

如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串。

如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串。

如果省略第二个参数,默认使用空格补全长度。

我们简单具一个应用场景:比如需要对身份证、银行卡的前面位数进行隐藏

代码演示

代码语言:javascript
复制
const message = "Hello World"

const newMessage = message.padStart(15, "*").padEnd(20, "-")
console.log(newMessage)
// ****Hello World-----

// 案例
const cardNumber = "321324234242342342341312"
const lastFourCard = cardNumber.slice(-4)
const finalCard = lastFourCard.padStart(cardNumber.length, "*")
console.log(finalCard)
// ********************1312

Trailing Commas 尾逗号

在ES8中,我们允许在函数定义和调用时多加一个逗号:

个人感觉↔作用不大,用到的不多

代码语言:javascript
复制
function foo(m, n,) {

}

foo(20, 30,)

Object Descriptors

ES5 有一个Object.getOwnPropertyDescriptor方法,返回某个对象属性的描述对象( descriptor )

ES8 增加了另一个对对象的操作是 Object.getOwnPropertyDescriptors

Object.getOwnPropertyDescriptors(data) 获取objcet对象所有数据的描述符

Object.getOwnPropertyDescriptor(data,“key”) 获取单个数据的描述符

代码演示

代码语言:javascript
复制
//  ES5
var obj = { name: 'yz',age:18 };
Object.getOwnPropertyDescriptor(obj, 'name')
// {value: 'yz', writable: true, enumerable: true, configurable: true}


Object.getOwnPropertyDescriptors(obj)
//{
//  age: {value: 18, writable: true, enumerable: true, configurable: true}
//  name: {value: 'yz', writable: true, enumerable: true, configurable: true}
//}

该方法允许对一个属性的描述进行检索。

在 Javascript 中, 属性 由一个字符串类型的“名字”(name)和一个“属性描述符”(property descriptor)对象构成。

value

该属性的值(仅针对数据属性描述符有效)

writable

当且仅当属性的值可以被改变时为true。(仅针对数据属性描述有效) 设置读写

configurable

当且仅当指定对象的属性描述可以被改变或者属性可被删除时,为true。

enumerable

当且仅当指定对象的属性可以被枚举出时,为 true。

最后,这是我第一次参加更文活动,茫茫人海中,如果有幸遇到你,读到我这篇文章,那真是太好了。我深知还有很多不足,希望大家能多提建议,还是想舔着脸皮,向屏幕前的大帅比们,大漂亮们,恳请一个小小的点赞,这会是对我莫大鼓励。也祝愿点赞的大帅比们,大漂亮们升职加薪走向人生巅峰!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • ES7 新增
    • Array Includes
      • 代码演示
    • 指数(乘方) exponentiation运算符
      • 代码演示
  • ES8 新增
    • Object values
      • 代码演示
    • Object entries
      • 代码演示
    • String Padding字符串填充
      • 代码演示
    • Trailing Commas 尾逗号
      • Object Descriptors
        • 代码演示
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档