循环读取时 JS 对象属性的顺序遵循怎样的规

JavaScript06

循环读取时 JS 对象属性的顺序遵循怎样的规,第1张

根据 ECMA-262(ECMAScript)第三版中描述,for-in 语句的属性遍历的顺序是由对象定义时属性的书写顺序决定的。

在现有最新的 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.