1. Object.keys
要取得对象上所有可枚举的实例属性,可以使用 ECMAScript5 的 Object.keys() 方法。这个方法接受一个对象作为参数,返回一个包含所有课枚举属性的字符串数组。
function Person() {}Person.prototype.name = 'Nicholas';Person.prototype.age = 29;Person.prototype.job = 'SoftWare Engineer';Person.prototype.sayName = function() {alert(this.name);};var keys = Object.keys(Person.prototype);alert(keys); //"name, age, job, sayName"var p1 = new Person();p1.name = "Rob";p1.age = 31;var p1keys = Object.keys(p1);alert(p1keys); //"name, age"
2. Object.getOwnPropertyNames
要取得所有的实例属性,无论是否可枚举,可以使用 Object.getOwnPropertyNames() 方法。
var keys = Object.hasOwnPropertyNames(Person.prototype);alert(keys); //"constructor, name, age, job, sayName"
3. for-in
在使用 for-in 循环时,返回的是所有能够通过对象访问的、可枚举的属性,其中既包括实例中的属性,又包括原型中的属性。屏蔽了原型中的不可枚举属性的实例属性也会在 for-in 循环中返回(只有 IE8 及更早版本例外)。
var o = {toString: function() {return "my object";}};for (var prop in o) {if (prop == "toString) {alert("Found toString"); //其他浏览器会显示,IE中不会显示}}
