获取JS对象属性(自身/原型/可枚举/不可枚举)
自身可枚举属性
方法1:ES6
Object.keys(obj) //只能返回自身可枚举属性
方法2
// for...in是默认枚举自身及原型中继承来的所有可枚举属性
for (key in person) {
// 只有是自身属性时,打印
if (Object.hasOwnProperty(key)) {
console.log(key); // "name"
}
}
自身+原型可枚举属性
for (property in object) { ...} //for...in是默认枚举自身及原型中继承来的所有可枚举属性
自身所有属性
Object.getOwnPropertyNames(obj); //自身可枚举属性以及不可枚举属性
自身+原型所有属性
function getAllPropertyNames( obj ) {
var props = [];
do {
//自身所有属性
props= props.concat(Object.getOwnPropertyNames( obj ));
} while ( obj = Object.getPrototypeOf( obj ) );
return props;
}
涉及API
Object.defineProperty()、Object.hasOwnProperty()、Object.getOwnPropertyNames(obj)、
Object.getPrototypeOf()