我們先定義一個對象,這個對象有原型上的屬性,有不可枚舉屬性,有可枚舉屬性
let obj={
name:"andy",
age:18
};
obj.__proto__.job="hehe";
Object.defineProperty(obj,"sex",{
enumerable:false
});
for in可以循環(huán)出所有的可枚舉屬性,不管是不是原型上的
for(let name in obj){
console.log(name);//name age job
}
Object.keys只能循環(huán)出自身的可枚舉屬性
let name=Object.keys(obj);
console.log(name);//["name", "age"]
getOwnPropertyNames返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組
let arr=Object.getOwnPropertyNames(obj);
console.log(Object.getOwnPropertyNames(obj));//["name", "age", "sex"]