第一种 for…in
循环遍历对象自身属性和继承的可枚举属性
代码如下
<script>
let obj = { 0: "a", 1: "b", 3: "c" };
for (let key in obj) {
console.log(key, ":", obj[key]);
// 0 : a
// 1 : b
// 3 : c
}
</script>
第二种 Object.keys()
返回一个数组,包含对象自身可枚举属性(不包含继承)
代码如下
<script>
let obj = { 0: "a", 1: "b", 3: "c" };
let obj1 = Object.keys(obj);
// obj1=["0", "1", "3"]
obj1.forEach((key) => {
console.log(key, obj[key]);
// 0 a
// 1 b
// 3 c
});
</script>
第三种 Object.getOwnPropertyNames(obj)
返回一个数组,包含对象自身所有属性(包括不可枚举属性)
代码如下
<script>
let obj = { 0: "a", 1: "b", 3: "c" };
let obj2 = Object.getOwnPropertyNames(obj);
console.log(obj2);
// obj2=["0", "1", "3"]
obj2.forEach(function (key) {
console.log(key, obj[key]);
// 0 a
// 1 b
// 3 c
});
</script>
第四种 Reflect.ownKeys(obj)
返回一个数字,包含对象自身的所有属性(不管属性名是Symbol或字符串,也不管是否可枚举.)
特别说明
1.Symbol:ES6新增了一种数据类型:Symbol,表示独一无二的值,Symbol最大的用途是用来定义对象的唯一属性名
2.关于枚举:在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的。可枚举性决定了这个属性能否被for…in查找遍历到。
版权声明:本文为xiaokuangren_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。