1. Object.keys

要取得对象上所有可枚举的实例属性,可以使用 ECMAScript5 的 Object.keys() 方法。这个方法接受一个对象作为参数,返回一个包含所有课枚举属性的字符串数组。

  1. function Person() {
  2. }
  3. Person.prototype.name = 'Nicholas';
  4. Person.prototype.age = 29;
  5. Person.prototype.job = 'SoftWare Engineer';
  6. Person.prototype.sayName = function() {
  7. alert(this.name);
  8. };
  9. var keys = Object.keys(Person.prototype);
  10. alert(keys); //"name, age, job, sayName"
  11. var p1 = new Person();
  12. p1.name = "Rob";
  13. p1.age = 31;
  14. var p1keys = Object.keys(p1);
  15. alert(p1keys); //"name, age"

2. Object.getOwnPropertyNames

要取得所有的实例属性,无论是否可枚举,可以使用 Object.getOwnPropertyNames() 方法。

  1. var keys = Object.hasOwnPropertyNames(Person.prototype);
  2. alert(keys); //"constructor, name, age, job, sayName"

3. for-in

在使用 for-in 循环时,返回的是所有能够通过对象访问的、可枚举的属性,其中既包括实例中的属性,又包括原型中的属性。屏蔽了原型中的不可枚举属性的实例属性也会在 for-in 循环中返回(只有 IE8 及更早版本例外)。

  1. var o = {
  2. toString: function() {
  3. return "my object";
  4. }
  5. };
  6. for (var prop in o) {
  7. if (prop == "toString) {
  8. alert("Found toString"); //其他浏览器会显示,IE中不会显示
  9. }
  10. }