JS中遍历对象属性的几种方式

我们先创建一个对象

function Person() {
          
   
}
Person.prototype.name = "Nicholas";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function () {
          
   
  alert(this.name);
};

let person = new Person();
person.like = apple
peson实例上有like属性,其他的name 、age 、job 、sayName 为原型上的属性

1. Object.keys

这个方法接收一个对象作为参数,返回一个包含所有可枚举实例属性的字符串数组

    Object.keys():返回包含对象键名的数组 Object.values():返回包含对象键值的数组 Object.entries():返回包含对象键名和键值的数组

2. Object.getOwnPropertyNames()

如果你想要得到所有实例属性,无论它是否可枚举,都可以使用 Object.getOwnPropertyNames()方法。

3. for-in 循环

用 for-in 循环时,返回的是所有能够通过对象访问的、可枚举的属性,其中既包括存在于实例中的属性,也包括存在于原型中的属性

4. 代码

    遍历Person.prototype对象
console.log(=========遍历Person.prototype对象===========)
// 方法一
var keys1 = Object.keys(Person.prototype);
console.log(keys1: , keys1); // keys1:  (4) [name, age, job, sayName]
// 方法二
var keys2 = Object.getOwnPropertyNames(Person.prototype);
console.log(keys2: , keys2); // keys2:  (5) [constructor, name, age, job, sayName]
// 方法三
let keys3 = []
for (var prop in Person.prototype) {
          
   
  keys3.push(prop)
}
console.log(keys3: , keys3); // keys3:  (4) [name, age, job, sayName]
注意遍历Person.prototype时,结果中包含了不可枚举的 constructor 属性
    遍历person对象
console.log(=========遍历person对象===========)
// 方法一
var personKeys1 = Object.keys(person);
console.log(personKeys1: , personKeys1); // personKeys1:  [like]
// 方法二
var personKeys2 = Object.getOwnPropertyNames(person);
console.log(personKeys2: , personKeys2); // personKeys2:  [like]
// 方法三
let personKeys3 = []
for (var prop in person) {
          
   
  personKeys3.push(prop)
}
console.log(personKeys3: , personKeys3); // personKeys3:  (5) [like, name, age, job, sayName]
经验分享 程序员 微信小程序 职场和发展