Reflect.ownKeys()
**Reflect.ownKeys(target)**是返回所有的属性key,包括不可枚举类型,不包括继承的属性
参数:
target:获取目标对象的属性,如果target不是对象则报错
返回值:
返回由target属性组成的数组
let obj = {
name:'zhangsan',
age:'18'
}
console.log(Reflect.ownKeys(obj));
这里注意在js中数组也是对象
let obj = {
name:'zhangsan',
age:'18'
}
let arr = new Array(['1','2']);
console.log(typeof arr); //object
console.log(Reflect.ownKeys(arr));
**Reflect.ownKeys(obj)和Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))**等价
let obj = {
name:'zhangsan',
age:'18',
func:function(){
console.log(test);
}
}
console.log(Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)));
console.log(Reflect.ownKeys(obj));
Object.keys()
**Object.keys(obj)**返回遍历对象可枚举类型的属性,不包括继承的属性
参数:
obj要遍历的对象
返回值:
返回字符串数组
let obj = {
name:'zhangsan',
age:'18',
func:function(){
console.log(test);
},
}
Object.defineProperty(obj,'job',{
value:'programer',
enumrable:false
})
console.log(Object.keys(obj)); //(3) ["name", "age", "func"]
Reflect.ownKeys和Object.keys的区别
Reflect.ownKeys返回所有的属性不管是不是可枚举
Object.keys返回可枚举的属性