💚写在前面:在解决这个问题之前,我们需要知道对象的属性分为:自身属性和继承属性;可枚举属性;可迭代属性;以symbol为属性值的属性。我们使用不同的AP所I获得的属性不同。
获取对象属性相关的API
hasOwnProperty()
判断是否是自身属性 【返回 布尔值】
Object.keys()
获取自身可枚举属性(for..in
的原理) 【返回 数组】
Object.getOwnPropertyNames()
获取自身可枚举和不可枚举属性 【返回 数组】
for...in
获取自身和继承的可枚举属性( 除去symbol
)( 配合使用hasOwnProperty()
)
for...of
获取自身可迭代属性的值