当前位置: 首页 > Web前端 > HTML

ES6新特性

时间:2023-03-28 14:09:06 HTML

ES6特性ES6(ECMAScript2015)也就是ECMAScript6。因为第六版是2015年发布的,所以有两个名字ES6或者ECMAScript。ES6之后,ECMA每年都会准时更新,在获取div对象

之前不会准时更新
让items=document.getElementsByClassName("item");//将类为item的元素放在items中组成一个listitems是一个块对象数组,里面有div//遍历这个listfor(leti=0;i
  • 刘备
  • 关羽
  • 张飞
  • `;另外,字符串拼接可以更方便letstr1='LiuBei';letstr2='Shuzhong${str1}'//str2ShuzhongLiuBeiobject简写可以直然后将变量和函数写入对象letname='刘备';letchange=function(){console.log('Hello,chengdu')}constLiu={name,change,f(){//这是同样的一个简化,整个写法应该是f:function()...}}箭头函数与普通函数相比,箭头函数的this是静态的,不会因为call和apply方法的改变而改变。箭头函数中的this总是指向函数所在的对象window.name='刘备'constWEI={name:'曹操';}letgetName=()=>{console.log(this.name);}functiongetName2(){console.log(this.name);}//直接调用getName();getName2();//同样是输出刘备//call改点调用getName.call(WEI);//因为getName是一个箭头函数不会改成指向getName2.call(WEI);//因为是普通函数,call指向的是WEI对象,getName2中的this会变成WEI。在这里也可以更好的理解call、apply、bind的作用。箭头函数对象不能实例化为构造函数。也就是说,用来实例化对象的函数还是使用普通函数letPerson=(name,age)=>{//函数作为构造时,只能使用函数类型functionthis.name=姓名;this.age=age;}functionPerson(name,age){this.name=name;this.age=age;}letme=newPerson('刘备',23);Arguments参数最多不能用最常用的是this//这是一个例子来体验this指向constobj1={name:'刘备',getName:function(){this.name;//普通函数this指向obj1}}constobj2={name:'刘备',getName:()=>{this.name;//箭头函数this指向window,不是obj2}}filter()函数filter函数会返回一个新的数组,不会修改原函数参数是a函数参数中匿名函数中的items会执行这个函数反过来,如果匿名函数返回true,它将保存在新数组中letnums=[1,2,3,4,5,6,7,8,9,10];letnums2=nums.filter((item)=>{if(item%2===0){returntrue;}else{returnfalse;}})形参设置默认值这个特性在很多语言中也有。functionadd(a,b,c=10){returna+b+c;}console.log(add(1,1))//输出12个rest参数,arguments参数与arguments参数类似,函数为还有类似的functionfn(){console.log(arguments);//arguments参数不需要主动定义,直接使用即可;输出是对象}fn("w","n","z");functionfn1(...args){console.log(args);//输出是一个数组}fn("王菲","那英");functionfn2(x,y,...args){console.log(args);//output是数组[3,4,5,6,7]}fn2(1,2,3,4,5,6,7)arguments参数的理解和使用可以看理解以及本博客中arguments参数的使用展开运算符的作用:将一个数组的内容展开为多个变量。简单点说就是丢掉数组mark[]consttfboys=["王俊凯","易烊千玺","王源"];functionchunwan(){console.log(arguments);}chunwan(tfboys);//控制台输出的参数个数只有一个,而是一个数组chunwan(...tfboys)//使用扩展运算符后,arguments.length为3分别为“王俊凯”、“易烊千玺”、“王源”"数组合并:constlist1=["a","b"];constlist2=["c","d"];constlist12=[...list1,...list2];数组对象到数组:
    constdivs=document.querySelectorAll("div");//ThisisanarrayobjectconstdivArray=[...divs]//只是此时才转为数组数组copy:constA=["e","g","m"];constB=[...A]//得到另一个完全相同的数组B数据类型symbolSymbol是JS唯一数据类型lets=symbol("symbol");//独特的数据类型通常会为对象添加属性和方法。Symbol函数接受一个可选的字符串来增加对Symbol的描述。使用Object.getOwnPropertyNames()、Object.keys()或for...in方法遍历对象,不能遍历到symbol属性,使用Object.getOwnPropertySymbols)()返回所有symbol属性symbol属性不能创建共享symbolswithnewsymbol.for(),如果已经存在,直接返回第一个symbolemperor={}constbastard1=Symbol.for("likeaflower");emperor[bastard1]="likeaflower'sson";constbastard2=Symbol.for("likeaflower");emperor[bastard2]="子如花";constbastard3=Symbol.for("如水");emperor[bastard3]="子如水"console.log(emperor);//只会输出两个symbolfor用于创建,所以===establishedtrueconsole.log(symbol()===symbol())//false因为symbol创建的唯一迭代器可以使用原生的迭代器数据类型,如Array,arguments,set,map,string,如果不确定有没有itrator,可以输出object。查找对象中是否有symbol.iterator属性,如果有,可以使用iteratorconstxiyou=["唐僧","孙悟空","猪八戒","草稿僧"];for(letvofxiyou){/如果/forin,输出会是数组下标console.log(v);}迭代器symbol.iterator本身也是一个对象,可以打印出来。里面有个方法next()。我认为理解最重要的是要知道迭代器是一个对象,而不是一个普通的指针。之前的理解是生成器函数略偏Ajax