Javascript 对象那些事(持续更新)
一 前言
记录javascript语言object类型的一些问题。
1. typeof []; // object
   2. typeof {};// object
   3. typeof null; //object这里讲的是第二种情况。
二 正文
1.for...in 会遍历原型链上的属性
class Super{
    constructor(val){
        this.value=val;
    }
};
const suber = {
    value:'suber'
};
suber.prototype = new Super('super');
for(attr in suber){
    const val = suber[attr]
    console.log('attr-val=>',attr,val); //attr-val=> value suber   attr-val=> prototype Super {value: "super"}
}这个问题很多人都应该知道。解决的办法也很多:
1) 使用hasOwnProperty(attr) 来取自有属性的值
2)  使用Object.keys(object) 来取得所有的自有属性key,然后object[key]来取得value
2.for...in 遍历的顺序不能保证
Properties order in objects is not guaranteed in JavaScript; you need to use an Array.
for...in 遍历的顺序是按道理来讲是按照出现的先后顺序,但是各家浏览器遍历顺序有所不同。
Chrome Opera 中使用 for-in 语句遍历对象属性时会遵循一个规律,它们会先提取所有 key 的 parseFloat 值为非负整数的属性, 然后根据数字顺序对属性排序首先遍历出来,然后按照对象定义的顺序遍历余下的所有属性。其它浏览器则完全按照对象定义的顺序遍历属性。
所以,顺序这种事,还是要用数组来保证。
详细请参考:JS对象遍历顺序
三 后记
参考链接:JS对象遍历顺序
相关推荐
  OldBowl    2020-06-26  
   morexyoung    2019-12-06  
   momode    2019-06-30  
   sunnylin    2019-06-27  
   Tomhsfreestyle    2019-06-26  
   Anything    2011-03-04  
   wdy00    2019-05-10  
   rainsnowing    2017-03-31  
   ruler    2017-01-10  
   zxiaocun    2016-12-28  
   刘利新    2016-08-24  
   yangmingxing0    2019-05-08  
   扭来不叫牛奶    2019-04-29  
   88487901    2016-04-18  
   promiseLOVE    2019-04-23  
   seoppt    2014-03-25  
   舜岳    2013-12-13  
   84533871    2013-11-13  
   88487901    2019-02-27