序文
JavaScriptのオブジェクトは、複数のプロパティメソッドを取得しますが、それぞれの方法には、状況を説明するために、以下のことが想定され、さまざまなシナリオです
let c = Symbol.for('这是实例上的属性');
let e = Symbol.for('这是原型上的属性');
let obj = {a:1,b:2,[c]:5};
Reflect.setPrototypeOf(obj,{
fn:2,
[e]:8
})
Object.defineProperties(obj,{
d:{
value:6,
enumerable:false
}
})
Object.keys()
Object.keys(obj).forEach(prop=>{
console.log(prop);
})
//a
//b
取得インスタンスの属性オブジェクト自体が、それは記号キーが含まれていません。
Object.getOwnPropertySymbols()
console.log('-----------------获取symbol键')
Object.getOwnPropertySymbols(obj).forEach(prop=>{
console.log(prop);
})
// -----------------
// Symbol(这是实例上的属性)
記号キーを取得したりプロトタイプを得るために
Object.getOwnPropertyNames()
console.log('-----------------不管枚举或者不可枚举都会获取')
Object.getOwnPropertyNames(obj).forEach(prop=>{
console.log(prop);
})
//a
//b
//d
、まだ記号キーが含まれていませんでしょうかどうか列挙
以下のために...で
for(const prop in obj){
console.log(prop);
}
//a
//b
//fn
オブジェクトのインスタンスを追加することができ、反復法を使用して、プロトタイプのプロパティを必要に応じて、我々は反復法を使用して、まだ、プロトタイプを取得するプロパティを取得することは、慎重に必要とhasOwnProperty
裁判官を
for(const prop in obj){
if(obj.hasOwnProperty(prop)){
console.log(prop);
}
}
//a
//b