对象遍历及其他方法

遍历 for in 会遍历出对象以及该对象原型链上的属性名,for in 可以遍历到myObject的原型方法method,如果不想遍历原型方法和属性的话,可以在循环内部判断一下,hasOwnPropery方法可以判断某属性是否是该对象的实例属性, for(key in obj),key是obj里的属性名,如果是数组得到数组的索引值

for  of 获取属性值,

Object.keys() 是 ES5 新增的一个对象方法,该方法返回对象自身属性名组成的数组,它会自动过滤掉原型链上的属性,

object.values获取对象自身属性值的一个数组,object.entries获取一个数组,数组里面小数组,小数组第一个值是属性名,第二个值是属性值,

for in 循环和 Object.keys() 方法都不会返回对象的不可枚举属性,(对象里面装对象,这个对象的属性名就是不可枚举的属性)

// 创建一个对象并指定其原型,bar 为原型上的属性
// baz 为对象自身的属性并且不可枚举
const obj = Object.create({
 bar: 'bar'
}, {
 baz: {
  value: 'baz',
  enumerable: false
 }
})

obj.foo = 'foo'

// 不包括不可枚举的 baz 属性
Object.keys(obj).forEach((key) => {
 console.log(obj[key]) // foo
})

// 包括不可枚举的 baz 属性
Object.getOwnPropertyNames(obj).forEach((key) => {
 console.log(obj[key]) // baz, foo
})

Object.getOwnPropertyNames()也是 ES5 新增的一个对象方法,该方法返回对象自身属性名组成的数组,包括不可枚举的属性

Reflect.ownKeys() 方法是 ES2015 新增的静态方法,该方法返回对象自身所有属性名组成的数组,包括不可枚举的属性和 Symbol 属性

 

 

原型链:针对构造函数的原型对象https://blog.csdn.net/u012468376/article/details/53121081(很易懂)

 

posted @ 2021-06-23 23:34  瘦不下来的熊猫  阅读(93)  评论(0)    收藏  举报