JS基础——遍历对象属性的五种方法

一、定义对象

function Parent(name, age) {
  this.name = name
  this.age = age
}
function Child(school) {
  // Parent.call(this)
  this.school = school
  this[Symbol('symbol')] = 'symbol'
}

Child.prototype = new Parent()
Child.prototype.constructor = Child

let xiaoming = new Child('晨卿小学')
Object.defineProperties(xiaoming, {
  'property1': {
    value: 'IM_property1',
    enumerable: true,
    configurable: true,
    writable: true
  },
  'property2': {
    value: 'IM_property2',
    enumerable: false,
    configurable: true,
    writable: true
  },
})

定义了一个实例对象xiaoming,在这个实例对象上面:

  • 可枚举属性:school、property1
  • 不可枚举属性:property2
  • Symbol属性:Symbol('symbol')
  • 继承属性:name、age、constructor(即,prototype上的属性)

二、遍历方法

1、for ... in ...:枚举出自身的可枚举属性和继承属性

结果:name、age、school、property1、constructor(继承的原因,把constructor枚举出来了)

2、Object.keys():枚举出自身的可枚举属性,返回一个数组

结果:['school', 'property1']

3、Object.getOwnPropertyNames():枚举出自身的可枚举属性和不可枚举属性,返回一个数组

结果:['school', 'property1', 'property2']

4、Object.getOwnPropertySymbols():枚举出Symbol

结果:[Symbol(symbol)]

5、Reflect.ownKeys():枚举出自身的可枚举属性、不可枚举属性和Symbol

结果:['school', 'property1', 'property2', Symbol(symbol)]

方法可枚举属性不可枚举属性Symbol继承属性
for ... in ...        √        √
Object.keys()        √
Object.getOwnPropertyNames        √         √
Object.getOwnPropertySymbols()        √
Reflect.ownKeys()        √         √        √

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值