焦点速递!六个 ES13 中非常实用的新 JavaScript 特性

2023-04-20 17:05:09 来源: web前端开发

1.at

当我们想要获取数组的第 N 个元素时,我们通常使用 [] 来获取。


(资料图片仅供参考)

const array = [ "fatfish", "medium", "blog", "fat", "fish" ]console.log(array[ 1 ], array[ 0 ]) // medium fatfish

哦,这似乎不是什么稀罕事。但是请朋友们帮我回忆一下,如果我们想得到数组的最后第N个元素,我们会怎么做呢?

const array = [ "fatfish", "medium", "blog", "fat", "fish" ]const len = array.lengthconsole.log(array[ len - 1 ]) // fishconsole.log(array[ len - 2 ]) // fatconsole.log(array[ len - 3 ]) // blog

这看起来很难看,我们应该寻求一种更优雅的方式来做这件事。是的,以后请使用数组的at方法!

它使您看起来像高级开发人员。

const array = [ "fatfish", "medium", "blog", "fat", "fish" ]console.log(array.at(-1)) // fishconsole.log(array.at(-2)) // fatconsole.log(array.at(-3)) // blog
2.Object.hasOwn

是的,通常有两种方式,它们有什么区别呢?

对象中的“名称”obj.hasOwnProperty("名称")“in”运算符

如果指定属性在指定对象或其原型链中,则 in 运算符返回 true。

const Person = function (age) {  this.age = age}Person.prototype.name = "fatfish"const p1 = new Person(24)console.log("age" in p1) // true console.log("name" in p1) // true  pay attention here
obj.hasOwnProperty

hasOwnProperty 方法返回一个布尔值,指示对象是否具有指定的属性作为其自身的属性(而不是继承它)。

使用上面相同的例子:

const Person = function (age) {  this.age = age}Person.prototype.name = "fatfish"const p1 = new Person(24)console.log(p1.hasOwnProperty("age")) // true console.log(p1.hasOwnProperty("name")) // fasle  pay attention here

也许“obj.hasOwnProperty”已经可以过滤掉原型链上的属性,但在某些情况下并不安全,会导致程序失败。

Object.create(null).hasOwnProperty("name")// Uncaught TypeError: Object.create(...).hasOwnProperty is not a function
Object.hasOwn

不用担心,我们可以使用“Object.hasOwn”来规避这两个问题,比“obj.hasOwnProperty”方法更方便也更安全。

let object = { age: 24 }Object.hasOwn(object, "age") // truelet object2 = Object.create({ age: 24 })Object.hasOwn(object2, "age") // false  The "age" attribute exists on the prototypelet object3 = Object.create(null)Object.hasOwn(object3, "age") // false an object that does not inherit from "Object.prototype"
3.在模块的顶层使用“await”

来自 mdn 的 await 操作符用于等待一个 Promise 并获取它的 fulfillment 值。

const getUserInfo = () => {  return new Promise((rs) => {    setTimeout(() => {      rs({        name: "fatfish"      })    }, 2000)  })}// If you want to use await, you must use the async function.const fetch = async () => {  const userInfo = await getUserInfo()  console.log("userInfo", userInfo)}fetch()// SyntaxError: await is only valid in async functionsconst userInfo = await getUserInfo()console.log("userInfo", userInfo)

事实上,在 ES13 之后,我们可以在模块的顶层使用 await,这对于开发者来说是一个非常令人高兴的新特性。那太棒了。

const getUserInfo = () => {  return new Promise((rs) => {    setTimeout(() => {      rs({        name: "fatfish"      })    }, 2000)  })}const userInfo = await getUserInfo()console.log("userInfo", userInfo)

4.使用“#”声明私有属性

以前我们用“_”来表示私有属性,但是不安全,仍然有可能被外部修改。

class Person {  constructor (name) {    this._money = 1    this.name = name  }  get money () {    return this._money  }  set money (money) {    this._money = money  }  showMoney () {    console.log(this._money)  }}const p1 = new Person("fatfish")console.log(p1.money) // 1console.log(p1._money) // 1p1._money = 2 // Modify private property _money from outsideconsole.log(p1.money) // 2console.log(p1._money) // 2

我们可以使用“#”来实现真正安全的私有属性。

class Person {  #mnotallow=1  constructor (name) {    this.name = name  }  get money () {    return this.#money  }  set money (money) {    this.#money = money  }  showMoney () {    console.log(this.#money)  }}const p1 = new Person("fatfish")console.log(p1.money) // 1// p1.#money = 2 // We cannot modify #money in this wayp1.money = 2console.log(p1.money) // 2console.log(p1.#money) // Uncaught SyntaxError: Private field "#money" must be declared in an enclosing class
5.更容易为类设置成员变量

除了通过“#”为类设置私有属性外,我们还可以通过一种新的方式设置类的成员变量。

class Person {  constructor () {    this.age = 1000    this.name = "fatfish"  }  showInfo (key) {    console.log(this[ key ])  }}const p1 = new Person()p1.showInfo("name") // fatfishp1.showInfo("age") // 1000

现在你可以使用下面的方式,使用起来确实更加方便。

class Person {  age = 1000  name = "fatfish"  showInfo (key) {    console.log(this[ key ])  }}const p1 = new Person()p1.showInfo("name") // fatfishp1.showInfo("age") // 1000
6.从数组末尾查找元素

当我们想从数组中找到满足一定条件的元素时,find 和 findIndex 都是不错的选择。

const array = Array(10000000).fill(1)array.push(2)const d1 = Date.now()const el = array.find((el) => el >= 2)const d2 = Date.now()console.log({ el, time: d2 - d1 })

得到2,查找时间用了84毫秒,这是一个很恐怖的数字,而且耗时太长了。

幸运的是,从 ES13 开始,如果你之前指定目标元素更靠近尾部,使用 findLast 将大大减少其查找时间。

const array = Array(10000000).fill(1)array.push(2)const d1 = Date.now()const el = array.findLast((el) => el >= 2)const d2 = Date.now()console.log({ el, time: d2 - d1 })

标签:

焦点速递!六个 ES13 中非常实用的新 JavaScript 特性

1 at当我们想要获取数组的第N个元素时,我们通常使用[]来获取。constarray=[ fatfish , medium , blog

04-20 17:05:09

环球今头条!体教融合课间“燃”起来

学生练习融合舞蹈的课间操  今年以来,为增强学生体魄,桐梓县各学校持续深化体教融合,在传统课间操...

04-20 16:28:28

太阳与快船的前两场比赛来看,伦纳德的表现超越了杜兰特

在太阳队G2完成反击后,两队现在战成平局1-1,第三场将来到洛城快船的主场,处在下位的快船在首场赢下比...

04-20 15:37:18

流式细胞仪等中标结果公告 全球播资讯

项目名称:流式细胞仪等项目编号:0819-234002300003 01招标范围:流式细胞仪1台全自动血液培养系统1台...

04-20 15:40:44

今日精选:中国科传(601858)4月20日主力资金净买入3.22亿元

截至2023年4月20日收盘,中国科传(601858)报收于30 44元,上涨10 01%,涨停,换手率4 9%,成交量38 ...

04-20 15:28:26

好美!35岁蕾哈娜露孕肚,身材火辣,怀二胎还能减肥,脸小显瘦-每日消息

当地时间4月19日,著名歌星蕾哈娜(Rihanna)身穿芬迪1999秋冬系列(老佛爷)拼接色连帽大衣,肩背Gucc...

04-20 14:36:44

热议:影像记录|守护长城的年轻人

山高坡陡,崎岖难行。4月14日,秦皇岛市山海关区长城保护队队长张鹏又踏上了巡护之路。

04-20 14:23:30

出口退税计算方法与计算公式的区别_出口退税计算方法与计算公式

1、比如你公司产品退税率为15%,那么不免征退差税额为:300*(17%-15%)=6万内销销项税:200*17%=34

04-20 14:40:40

西安:泉随乐舞迎客来_每日速读

游人在西安大雁塔北广场观看音乐喷泉表演(4月18日摄,无人机照片)。新华社记者刘潇摄陕西西安大雁塔北广...

04-20 13:55:33

【世界新视野】外交部:美国是“黑客帝国” 应给国际社会一个交代

在今天(4月19日)举行的外交部例行记者会上,发言人汪文斌表示,近期关于美国对包括其盟国在内的世界各...

04-20 13:38:11

过继孩子怎么办手续_过继孩子的条件和手续

1、根据收养法第四条下列不满十四周岁的未成年人可以被收养:(一)丧失父母的孤儿;(二)查找不到生父...

04-20 13:04:32

武威民勤野生动物种类增加到180种 环球快讯

鹅喉羚中国甘肃网4月20日讯据兰州晚报报道(通讯员梁霞王杰己记者雒焕素)据甘肃民勤连古城国家级自然保...

04-20 12:46:27

天天视点!去湿气吃什么食物好_这些要多吃

解答:1、薏米是常见的祛湿食物,主要作用是祛湿。如果发现体内湿气太重,可以用薏米煮粥吃,或者直接用...

04-20 12:44:01

摩根大通:予中国中车(01766.HK)“增持”评级 目标价上调至7港元|今日热讯

摩根大通发布研究报告称,尽管中国中车(01766 HK)今年尚未启动所有列车类型的招标,预计集团首季的盈利...

04-20 12:03:10

上市公司分拆上市热潮涌动 已有21家分拆子公司成功登陆A股

​在4月18日举办的“首届中国上市公司产业发展暨分拆上市论坛”上,中国上市公司协会党委委员、副会长孙...

04-20 11:24:37

推动经济运行持续整体好转(经济新方位·首季数据观察) 环球滚动

日前,国家统计局发布的经济运行数据显示:一季度国内生产总值同比增长4 5%,国民经济实现了良好开局。...

04-20 10:57:52

青少年成了“铜宝宝”怎么治疗?

近日,一位母亲带着正在上高中的儿子小蔡(化名)来到温州医科大学附属第一医院就诊。“儿子体检每次都...

04-20 11:02:47

frp复合材料是什么_FRP是一种什么材料

1、FRP:全称纤维增强复合材料,FRP是FibreReinforcedPolymer Plastic的简称,现有C

04-20 10:55:03

聚乙二醇粉商品报价动态(2023-04-19) 焦点短讯

交易商品牌 产地交货地最新报价聚乙二醇粉 4000 ,25kg 袋济南金锦泉经贸有限公司国产山东省10200元...

04-20 10:12:55

cftc持仓报告为什么停更_cftc持仓报告

1、CFTC黄金白银持仓报告对于我们的分析可以做一个参考。2、若持仓减少,说明该机构对于后市的价格走势...

04-20 10:03:03

超150款新车全球首发,2/3为新能源车型!直击2023上海车展|快看

中国高端新能源汽车品牌正式崛起。图为:比亚迪旗下高端新能源汽车品牌仰望。东方网记者曹磊、范易成4月...

04-20 09:33:51

常见的抗氧化的食物有哪些?抗氧化面膜真的有效果吗?_简讯

常见的抗氧化的食物现在抗氧化的食物非常多,能够对抗老化火力最强的就是西红柿了,老化火力最强的就是...

04-19 20:17:25

赏析诗歌的方法并配上例子_赏析诗歌的方法

1、鉴赏方法:一、品味富于表现力的“诗眼”或“题眼”。2、如李清照《如梦令》“昨夜雨疏风骤,浓睡不...

04-19 19:52:32

当前观点:嫦娥一号多少吨 嫦娥一号体积和重量分别是多少

今天来聊聊关于嫦娥一号多少吨,嫦娥一号体积和重量分别是多少的文章,现在就为大家来简单介绍下嫦娥一...

04-19 19:16:45

财报发布前夕,特斯拉在美又降价了!这次业绩需要重点关注什么?_世界播资讯

两款车型后驱版今年已分别降价15%和30%。在一季报公布之前,特斯拉叕降价了!4月19日,特斯拉美国官网显...

04-19 19:10:54

工业富联触及跌停,成交额超42亿元

工业富联触及跌停,成交额超42亿元,上市,成交额,工业富联,鸿海集团,龙虎榜数据,富士康工业互联网

04-19 18:56:39

最资讯丨小说西游记中朱紫国王与赛太岁都对朱紫国王后一往情深是因为什么?

金圣宫娘娘是西游记中的人物,朱紫国国王的王后。遥望历史的河流,感受历史的沧桑,下面和趣历史小编一...

04-19 18:41:10

国家统计局:一季度中国房地产业GDP同比增长1.3%

智通财经APP获悉,4月19日,国家统计局发布2023年一季度国内生产总值初步核算结果。数据显示,2023年一...

04-19 18:09:32

SpaceX公布星舰首飞新日期 4月20日升空-环球观天下

每经AI快讯,美国太空探索技术公司(SpaceX)周一在推特上称,将会在当地时间4月20日(星期四)对星舰进行...

04-19 17:47:57

小赢卡贷逾期28天延迟还款征信会怎么样

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

04-19 16:54:18

“何你有约”传播好声音 何山社区以党建带“关建”护航青少年成长

“何你有约”传播好声音何山社区以党建带“关建”护航青少年成长

04-19 16:59:37

4月19日 11:28分 中国科传(601858)股价快速拉升

分时图快速拉升意味此时存在大单买入,在大单的推动下,股价快速地上涨。截止发稿,中国科传(601858)...

04-19 16:21:33

英雄志23卷万方有罪在线阅读_英雄志23卷万方有罪_焦点速讯

1、寻常豪门蓄妾纳姬,总是一个赛过一个,越娶越美,可这王妃不同,看她脸上覆了薄纱,仅仅露出一双唇,...

04-19 16:04:24

我国的盐场主要有哪些_验厂主要有哪些_世界快资讯

1、FactoryFacilitiesandEnvironment工厂设施和环境2、MachineCalib

04-19 15:50:10

1-1,2-0!欧冠悲喜一夜!皇马双杀切尔西,米兰时隔16年再进4强 世界通讯

切尔西花费了超过6亿欧元用来重建球队,但切尔西的战绩却惨不忍睹,图赫尔和波特两任主帅先后因为成绩欠...

04-19 15:24:43

天天日报丨“三巨头”合砍79分,NBA季后赛太阳逆转快船

“三巨头”合砍79分,NBA季后赛太阳逆转快船,布克,三巨头,快船队,凯文杜兰特,威斯布鲁克,nba季后赛,科怀·伦纳德

04-19 15:20:34

当前焦点!November是几月份_nov是几月份

1、11月。2、11月是一年中的第11个月份,英文名是November,位于十月和十二月之间农历十一月称作冬月。3、罗马

04-19 14:48:39

曾试图独揽大权未果!马斯克暗示将起诉OpenAI

曾试图独揽大权未果!马斯克暗示将起诉OpenAI

04-19 14:18:20

环球热推荐:海陆重工:2022年研发投入金额为10048.31万元,占营业收入的比例为4.25%

海陆重工(002255)04月19日在投资者关系平台上答复了投资者关心的问题。

04-19 14:34:11

荷兰国际:美债收益率将维持这一趋势|焦点热文

越来越多的人相信,美国地区银行之间的传染风险已经可控,而且近期的银行业风险对经济的实际压力有限,...

04-19 13:52:37

迪瑞医疗(300396):业绩符合预期 多产品线驱动稳健增长 世界热推荐

迪瑞医疗(300396):业绩符合预期多产品线驱动稳健增长

04-19 13:37:29

4月19日华东港口甲醇市场最新动态 观焦点

【4月19日华东港口甲醇市场最新动态】华东地区:早间江苏港口太仓甲醇价格坚挺,现货商谈在2535-2540元...

04-19 13:28:41

柯南竟被抵制滚出中国市场?挑战观众底线,被举报三观不正

1994年,《名侦探柯南》漫画在日本开启连载。两年后TV版播出。中国引进并使用台版配音,在少儿频道反复...

04-19 12:52:03

魅族手机忘记密码怎么解锁_魅族忘记密码强制刷机

1、1 用手按手机电源键关机。手机页面出来后,点击右边的按钮关机。2、2 单击关机按钮后,您选择单击...

04-19 12:23:38

负极材料行业全景调研及现状分析2023

一、负极材料的概况负极材料主要由碳素材料为主,包括天然石墨、人造石墨、石墨化中间碳微球。目前中国...

04-19 12:11:55

世界快讯:探索豪华座驾之王——凯迪拉克Escalade

凯迪拉克Escalade是美国豪华汽车品牌凯迪拉克旗下的一款大型豪华SUV,被誉为“豪华座驾之王”。该车型的...

04-19 11:43:45

今日播报!北京海淀区尚丽外国语学校开设了哪些课外活动? -->

北京海淀区尚丽外国语学校是一所开设了小学、初中和高中12年一贯制的私立学校,学校拥有丰富的教学资源...

04-19 11:19:09

博汇股份:“双增长”推动业绩明显提升,产能提升筑牢未来成长根基 天天播报

4月17日晚间,博汇股份(300839 SZ)披露年报报告期内,公司实现营业收入29 65亿元,同比增长72 96%...

04-19 11:12:36

成都:首届建筑职业技能人才大赛开赛|天天快播

(记者刘忠俊)四川省成都市首届建筑职业技能人才大赛18日在成都简阳市开赛,本次大赛吸引了306支队伍参赛...

04-19 10:34:19

世界快播:济宁医学院附属医院数据中心获批“山东省数据开放创新应用实验室”称号

近日,山东省大数据局公布《山东省数据开放创新应用实验室(第二批)名单》,由济宁医学院附属医院数据...

04-19 10:16:33

环球今头条!体教融合课间“燃”起来
太阳与快船的前两场比赛来看,伦纳德的表现超越了杜兰特
流式细胞仪等中标结果公告 全球播资讯
今日精选:中国科传(601858)4月20日主力资金净买入3.22亿元
好美!35岁蕾哈娜露孕肚,身材火辣,怀二胎还能减肥,脸小显瘦-每日消息
热议:影像记录|守护长城的年轻人
出口退税计算方法与计算公式的区别_出口退税计算方法与计算公式
西安:泉随乐舞迎客来_每日速读
【世界新视野】外交部:美国是“黑客帝国” 应给国际社会一个交代
过继孩子怎么办手续_过继孩子的条件和手续
武威民勤野生动物种类增加到180种 环球快讯
天天视点!去湿气吃什么食物好_这些要多吃
摩根大通:予中国中车(01766.HK)“增持”评级 目标价上调至7港元|今日热讯
上市公司分拆上市热潮涌动 已有21家分拆子公司成功登陆A股
推动经济运行持续整体好转(经济新方位·首季数据观察) 环球滚动
青少年成了“铜宝宝”怎么治疗?
frp复合材料是什么_FRP是一种什么材料
聚乙二醇粉商品报价动态(2023-04-19) 焦点短讯
cftc持仓报告为什么停更_cftc持仓报告
超150款新车全球首发,2/3为新能源车型!直击2023上海车展|快看
常见的抗氧化的食物有哪些?抗氧化面膜真的有效果吗?_简讯
赏析诗歌的方法并配上例子_赏析诗歌的方法
当前观点:嫦娥一号多少吨 嫦娥一号体积和重量分别是多少
财报发布前夕,特斯拉在美又降价了!这次业绩需要重点关注什么?_世界播资讯
工业富联触及跌停,成交额超42亿元
最资讯丨小说西游记中朱紫国王与赛太岁都对朱紫国王后一往情深是因为什么?
国家统计局:一季度中国房地产业GDP同比增长1.3%
SpaceX公布星舰首飞新日期 4月20日升空-环球观天下
小赢卡贷逾期28天延迟还款征信会怎么样
“何你有约”传播好声音 何山社区以党建带“关建”护航青少年成长
4月19日 11:28分 中国科传(601858)股价快速拉升
英雄志23卷万方有罪在线阅读_英雄志23卷万方有罪_焦点速讯
我国的盐场主要有哪些_验厂主要有哪些_世界快资讯
1-1,2-0!欧冠悲喜一夜!皇马双杀切尔西,米兰时隔16年再进4强 世界通讯
天天日报丨“三巨头”合砍79分,NBA季后赛太阳逆转快船
当前焦点!November是几月份_nov是几月份
曾试图独揽大权未果!马斯克暗示将起诉OpenAI
环球热推荐:海陆重工:2022年研发投入金额为10048.31万元,占营业收入的比例为4.25%
荷兰国际:美债收益率将维持这一趋势|焦点热文
迪瑞医疗(300396):业绩符合预期 多产品线驱动稳健增长 世界热推荐
4月19日华东港口甲醇市场最新动态 观焦点
柯南竟被抵制滚出中国市场?挑战观众底线,被举报三观不正
魅族手机忘记密码怎么解锁_魅族忘记密码强制刷机
负极材料行业全景调研及现状分析2023
世界快讯:探索豪华座驾之王——凯迪拉克Escalade
今日播报!北京海淀区尚丽外国语学校开设了哪些课外活动? -->
博汇股份:“双增长”推动业绩明显提升,产能提升筑牢未来成长根基 天天播报
成都:首届建筑职业技能人才大赛开赛|天天快播
世界快播:济宁医学院附属医院数据中心获批“山东省数据开放创新应用实验室”称号
巩固拓展经济恢复向好态势
X 广告
资讯
X 广告

Copyright ©  2015-2022 每日畜牧网版权所有  备案号:浙ICP备2022016517号-15   联系邮箱:5 146 761 13 @qq.com