var parent = Object.create(Object.prototype,{
a:{
value:123,
writable:true,
enumerable:true,
configurable:true
}
})
// parent继承自Object.prototype,有一个可枚举的属性a(enumerable:true)。
var child = Object.create(parent,{
b:{
value:456,
writable:true,
enumerable:true,
configurable:true
},
c:{
value:456,
writable:true,
enumerable:false,
configurable:true
}
})
// for in 会遍历自身及原型链上的可枚举属性
for(var key in child){
console.log(key)
}
// b
// a
// 如果只想输出自身的可枚举属性,可使用 hasOwnProperty 进行判断(数组与对象都可以,此处用数组做例子)
let arr = [1,2,3]
for(let i in arr){
if(arr.hasOwnProperty(i)){
console.log(arr[i])
}
}
console.log("-----------Object.keys-------------")
// Object.keys 会将对象自身的可枚举属性的key输出
console.log(Object.keys(child))
// Object.getOwnPropertyNames会将自身所有的属性的key输出
console.log("-----------Object.getOwnPropertyNames-------------")
console.log(Object.getOwnPropertyNames(child))