1.私有字段以前,所有类字段都必须在构造函数中定义。而且没有私有字段,所有字段都可以从外部访问。当然,有些技巧作用域会使某些变量无法访问。但是我们不要谈论它们。类Counter{constructor(){this.name='Counter';这个。计数=0;}inc(){this.count++;}}现在我们可以简单地写:classCounter{name='Counter';#计数=0;//私有字段!inc(){这个。#count++;}}2.使用关键字检查访问私有字段私有字段会带来一些问题。当在没有它的对象上访问私有字段时,将抛出错误。但是如何检查对象是否有它呢?使用尝试/捕捉!现在有一个更好的方法:在in关键字中。类计数器{名称='计数器';#计数=0;staticisCounter(obj){return#countinobj;}}constcounter=newCounter();Counter.isCounter(counter);//true3.at()数组和字符串的方法我们可以通过写[i]来访问位置A[i]的数组项。但是如果我是负数,我们想从数组的末尾获取元素怎么办?我们可以写成[a.length+i]。但不是很方便。另一种方法是使用A.slice(i)[0]。但它不是很有效。为此有at()方法:constA=[2,4,6,8,10]A.at(-1)//10constS="HelloWorld"S.at(-1)//'d'4.使用findLast()从数组末尾开始查找一个项目如何在数组中查找一个项目?使用find()方法。以及如何从最后找到?使用reverse()和find(),或编写您自己的函数:constA=[1,20,3,40,5];functionfindBackward(A,predicate){for(leti=A.length-1;i>=0;i--){if(predicate(A[i])){返回A[i];}}return-1;}findBackward(A,x=>x%10==0);//40//使用此方法要小心!A.reverse().find(x=>x%10==0);//40现在,我们可以使用Findlast()和FindlastIndex()方法:constA=[1,20,3,40,5];A.find(v=>v%10==0)//20A。findLast(v=>v%10==0)//40A.findIndex(v=>v%10==0)//1A.findLastIndex(v=>v%10==0)//3A.findLastIndex(v=>v==0)//-15。让我们使用Hasown()而不是HasownProperty()具有object.prototype.hasownproperty()方法来检查对象是否具有属性作为其直接属性。但是使用起来比较麻烦:lethasOwnProperty=Object.prototype.hasOwnProperty;if(hasOwnProperty.call(object,'foo')){console.log('haspropertyfoo');}但是,我们现在可以写:hasOwnProperty('foo')请记住,JavaScript是一种动态语言。我们可以为任何对象添加属性。因此,HasownProperty()可以被同名对象的属性隐藏。为了避免这种情况,我们可以使用Hasown()方法:if(Object.hasOwn(object,'foo')){console.log('haspropertyfoo');6.原因是错误的新属性,请参阅看到这样的错误处理代码很常见:awaitfetch('https://example.com/data.csv').catch((err)=>{thrownewError('failedtoget:'+err.message);})这样做是用新错误包装原始错误,但原始错误丢失了。现在,我们可以使用reason属性来存储原始错误并在以后检索它:awaitfetch('https://example.com/data.csv').catch((err)=>{thrownewError('failed得到',{cause:err})}).catch((err)=>{console.log('cause',err.cause)})7.#!现在支持Hashbang现在支持Hashbang,我们可以直接在终端运行nodejs脚本:#!/usr/bin/envnode'usestrict';控制台日志(1);or:#!/usr/bin/envnodeexport{};console.log(1);总结以上就是今天给大家分享的ES2022的7个新特性。希望对你有所帮助,也希望你能从中学到新的知识。最后,感谢您的阅读。
