本文介绍的是一些获取对象属性和防止对象被修改的方法
先定义一个对象
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
for (key in obj) {
console.log(key)
}
// a
// b
// name
Object.keys()
-> 返回一个由一个给定对象的自身可枚举属性组成的数组, 不会拿到原型上的属性, 拿不到 Symbol
Object.keys(obj) // ["a", "b"]
Object.values()
-> 返回一个给定对象自身的所有可枚举属性值的数组, 不能拿到 SymbolObject.values(obj) //[1, 2]
Object.entries()
-> 返回一个给定对象自身可枚举属性的键值对数组, 不会拿到原型上的属性Object.entries(obj) // [["a", 1],["b", 2]]