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中不会显示
}
}