本文介绍的是一些获取对象属性和防止对象被修改的方法

获取对象属性


先定义一个对象

let obj = { a: 1, b: 2 }
obj.__proto__.name = 22
obj[Symbol()] = 33
Object.defineProperty(obj, 'cc', {
  value: 'cc',
  enumerable: false,
})
// {a: 1, b: 2, cc: "cc", Symbol(): 33} , obj.__proto__.name -> 22

各个方法


  1. for...in -> 遍历对象属性, 拿到可枚举的原型上的属性, 不能拿到 Symbol

for (key in obj) {
  console.log(key)
}
// a
// b
// name
  1. Object.keys() -> 返回一个由一个给定对象的自身可枚举属性组成的数组, 不会拿到原型上的属性, 拿不到 Symbol

Object.keys(obj) // ["a", "b"]

  1. Object.values() -> 返回一个给定对象自身的所有可枚举属性值的数组, 不能拿到 Symbol
Object.values(obj) //[1, 2]
  1. Object.entries() -> 返回一个给定对象自身可枚举属性的键值对数组, 不会拿到原型上的属性
Object.entries(obj) // [["a", 1],["b", 2]]