在现有最新的 ECMA-262(ECMAScript)第五版规范中,对 for-in 语句的遍历机制又做了调整,属性遍历的顺序是没有被规定的。ES6的标准可能还有变化。
实际中遍历得顺序在各个浏览器无法保证一致,因此不建议用for in去遍历。不过可以考虑把for in的结果保存到数组,再把数组排个序,然后遍历这个数组去输出。
主要有三种方式,for...in 、Object.keys(obj)、Object.getOwnPropertyNames(obj):
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>遍历对象的几种方式</title>
</head>
<body>
</body>
<script>
const obj = {
a:1,
b:true,
c:"hello"
}
//方式1:for in方式
for(let key in obj){
console.log(key)
}
//Object.keys 方式 直接返回一个数组
console.log(Object.keys(obj))
console.log(Object.getOwnPropertyNames(obj))
</script>
</html>
如果想要了解他们具体的区别的话,可以看下这篇博客JS中三种主要的遍历对象的方法:for in、Object.