概述
前言
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
会获取实例对象本身属性,但是不包括symbol键
Object.getOwnPropertySymbols()
console.log('-----------------获取symbol键')
Object.getOwnPropertySymbols(obj).forEach(prop=>{
console.log(prop);
})
// -----------------
// Symbol(这是实例上的属性)
用于获取symbol键,原型上的也不会获取
Object.getOwnPropertyNames()
console.log('-----------------不管枚举或者不可枚举都会获取')
Object.getOwnPropertyNames(obj).forEach(prop=>{
console.log(prop);
})
//a
//b
//d
不管是否可枚举都会获取,仍然不包括symbol键
for…in
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
最后
以上就是斯文金鱼为你收集整理的JavaScript对象获取属性的几种方法的全部内容,希望文章能够帮你解决JavaScript对象获取属性的几种方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复