1.属性的简洁表示使得ES6中的变量和函数可以直接写成对象的属性和方法,让代码编写更加简洁。constf='a'constb={f}b//{f:'a'}等同于constb={f:f}在ES6中,允许直接在对象中写入变量。此时属性名就是变量名,属性值就是变量值functionu(x,y){return{x,y}}//====functionu(x,y){return{x:x,y:y}}u(1,2)//{x:1,y:2}或以下:functiono(){constx=1;常量x=2;返回{x,y}}o()//{x:1,y:2}2。属性名表达式JavaScript中属性名的表达方式有两种,一种是直接使用标识符作为属性名,另一种是使用表达式作为属性名。写第二类时,表达式要放在方括号中//oneobj.foo=true//twoobj['a'+'bc']=123//threelett='m'letobj={[t]:true,['a'+'bc']:123}表达式也可以用来定义方法名(注意:属性名表达式不能用简写法)letobj={['h'+'ello'](){return'hi'}}obj.hello()//hi如果属性名表达式是对象,默认会自动将对象转为字符串[objectObject]constka={a:1}constkb={b:2}constmyObj={[ka]:'va',[kb]:'vc'}myObj//对象{[objectObject]:'vc'}3.方法的name属性函数的name属性返回函数名,对象方法也是一个函数,所以也是constp={n(){console.log('h')}}p.n.name//n特例getter和setter属性在get和set上面是constobj={getfoo(){},setfoo(){}}obj.foo.name//undefinedconstd=Object.getOwnPropertyDescriptor(obj,'foo')d.得到。name//getfood.set.name//setfodspecialcasebind创建的函数名称属性返回bound加上原始函数的名称vardo=function(){}do.bind().name//bound做特例Function构造函数创建的函数,namereturnsanonymous(newFunction()).name//anonymous如果对象的方法是一个Symbol,name返回这个Symbol的描述constk=Symbol('description')k。名称//“[描述]”4.属性的可枚举性和可遍历可枚举性对象的每个属性都有一个描述对象,用来控制属性的行为。Object.getOwnPropertyDescriptor方法可以获得属性的描述对象letobj={f:234}Object.getOwnPropertyDescriptor(obj,'foo')//{//value:234,//writable:true,//enumerable:true,//configurable:true//}描述了对象的可枚举属性,称为“Enumerability”,如果该属性为true,则表示某些操作将忽略当前操作。有四种操作会忽略false的枚举属性——for...in循环:只遍历对象本身和继承的可枚举属性——Object.keys():返回对象本身所有可枚举属性的键名——JSON.stringify():只序列化对象本身的可枚举属性-Object.assign():忽略enumerableasFalse属性,只复制对象本身的可枚举属性ES6中所有的类原型方法都是对不可枚举属性的遍历ES6一共有5种遍历对象属性的方法(1)for...infor...in循环遍历对象自身和继承的可枚举属性(不包括Symbol属性)。(2)Object.keys(obj)Object.keys返回一个数组,包括对象本身(不包括继承的)的所有可枚举属性(不包括Symbol属性)的键名。(3)Object.getOwnPropertyNames(obj)Object.getOwnPropertyNames返回一个包含对象自身所有属性(不包括Symbol属性,但包括不可枚举属性)的键名的数组。(4)Object.getOwnPropertySymbols(obj)Object.getOwnPropertySymbols返回一个数组,包含对象本身所有Symbol属性的键名。(5)Reflect.ownKeys(obj)Reflect.ownKeys返回一个包含对象本身所有键名的数组,无论键名是Symbols还是字符串,是否可枚举。1)以上五种for..in方法遍历对象的键名,都遵循相同的属性遍历顺序。首先遍历所有的数字键,按照数值从小到大的顺序排列。接下来遍历所有的字符串键,按照加入时间从小到大的顺序排列。最后遍历所有Symbolkey,按照加入时间升序排列。5、super关键字this关键字总是指向函数所在的当前对象。ES6又增加了一个类似的关键字super,它指向当前对象的原型对象。注意:当super关键字代表原型对象时,只能用在对象的方法中,如果用在其他地方会报错。//报错constobj={foo:super.foo}//报错constobj={foo:()=>super.foo}//报错constobj={foo:function(){returnsuper.foo}}以上super的三种用法都会报错,因为对于JavaScript引擎来说,这里的super并没有用在对象的方法中。第一种写法是属性中使用super,第二种和第三种写法是函数中使用super,然后赋值给foo属性。目前,只有对象方法简写允许JavaScript引擎确认定义的是对象的方法。欢迎关注公众号【逍遥】ES6入门系列let,contES6入门变量解构赋值ES6入门字符串扩展ES6入门正则扩展ES6入门数值扩展ES6入门函数扩展新入门方法ES6Git教程前端Git基础教程
