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

JavaScript027

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

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

在现有最新的 ECMA-262(ECMAScript)第五版规范中,对 for-in 语句的遍历机制又做了调整,属性遍历的顺序是没有被规定的。ES6的标准可能还有变化。

实际中遍历得顺序在各个浏览器无法保证一致,因此不建议用for in去遍历。不过可以考虑把for in的结果保存到数组,再把数组排个序,然后遍历这个数组去输出。

使用for...in可以遍历js对象的属性,用法如下:

for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。

for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

1

2

3

4

for (变量 in 对象)

{

//在此执行代码

}

“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。

示例:

1

2

3

for (var sProp in window) {

alert(sProp)

}

以上例子会弹出window对象中的所有属性

具体代码如下所示:

1、<script>  //----------------for用来遍历数组对象;

2、 var i,myArr = [1,2,3]  for (var i = 0i <myArr.lengthi++) {    console.log(i+":"+myArr[i])  }

3、 //---------for-in 用来遍历非数组对象   var man ={hands:2,legs:2,heads:1}  //为所有的对象添加clone方法,即给内置原型(object,Array,function)增加原型属性,该方法很强大,也很危险   if(typeof Object.prototype.clone ==="undefined"){    Object.prototype.clone = function(){}   } ;

4、  //   for(var i in man){    if (man.hasOwnProperty(i)) { //filter,只输出man的私有属性     console.log(i,":",man[i])   }  }  ;

5、//输出结果为print hands:2,legs:2,heads:1   for(var i in man) {//不使用过滤    console.log(i,":",man[i])  }   ;

6、 //输出结果为://hands : 2 index.html:20   //legs : 2 index.html:20   //heads : 1 index.html:20   //clone : function ;

7、for(var i in man) {    if(Object.prototype.hasOwnProperty.call(man,i)) { //过滤     console.log(i,":",man[i])   }   };

8、 //输出结果为print hands:2,legs:2,heads:1 </script>   。

javaScript遍历对象总结:

1、

2、