ES6对象的扩展

108 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第14天juejin.cn/post/712312…

  1. 对象属性的简洁写法。声明一个变量,变量名就是对象的属性名,变量值就是对象的属性名。
  2. 对象的属性表达式,对象的属性可以设置为一个表达式,把该表达式的结果作为对象的属性名。读取的时候可直接写对象名●属性名表达式的结果,就能得到该属性的值。 注意:属性表达式和属性简洁写法不能同时使用,否则会报错。
  3. 对象的方法简写,去掉:function,剩下的接着和以前是一样的写法。
  4. 属性的简洁写法在作为函数返回值时比较方便。
  5. 对象的方法也有name属性,返回的是方法名。例子:obj.方法名.name;

对象的属性可枚举性

对象的每个属性都有一个描述对象,通过Object.getOwnPropertyDescriptor(对象名,'属性名')的到这个属性的描述对象,描述对象有一个enumerebal属性,该属性值为true,就代表对应的对象属性是可枚举的,为false,就代表不可枚举的。

遍历对象的属性的方法

  1. for ... in 循环遍历对象自身的属性和继承的可枚举属性。
  2. Object.keys(obj)返回值为一个数组,包含了对象自身所有可枚举属性的键名(不包括Symbol属性,不包括不可枚举的属性)。
  3. Object.getOwnPropetyNames(obj)返回值为一个数组,包含对象自身的所有属性的键名(不包含Symbol属性,包含不可枚举的属性)
  4. Object.getOwnPropetySymbols(obj)返回值为一个数组,包含对象的所有Symbol属性的键名
  5. R.ownkeys(obj)返回值为一个数组,不管是Symbol属性还是不可枚举属性或者字符串,都包含在里面,但是不包含继承的属性。

以上5中方法,遍历时都遵循以下规则 1。 先遍历数值键,从小到大的顺序遍历 2. 然后遍历字符串键,按添加的先后顺序遍历 3. 最后遍历Symbol属性键,按添加的先后顺序遍历

super 它是ES6里新增的关键字,与this指向功能类似,super指向当前对象的原型对象,它只能用在字面量表示法创建的对象里面。

设置对象的原型对象语法:Object.setPrototypeOf(对象名,原型对象名)