Skip to content
文档章节

对象属性获取

Object.keys

获取对象可枚举的属性

js
const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};

console.log(Object.keys(object1));
// Expected output: Array ["a", "b", "c"]

Object.getOwnPropertyNames()

获取指定对象的所有自身属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组。

js
var arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr).sort()); // ["0", "1", "2", "length"]

Object.prototype.hasOwnProperty()

指示对象自身是否具有某种属性

js
arr.hasOwnProperty("length") // true
arr.hasOwnProperty("toString") // false

for ...in 和 Object.keys 的区别

  1. Object.keys 获取对象自身可枚举属性
  2. for ...in 获取对象自身和原型链上面可枚举的属性

for ...in 和 for ...of 的区别

  1. for let key in obj 遍历对象所有可枚举的属性, key 是属性
  2. for let value of iterable 按顺序迭代对象 value 是值

iterable 可迭代对象包括: Array, Map, Set, String, arguments 等