用for循环遍历对象

###用for循环遍历对象

var person = {

    name: 'tom',

    age: 29,

    sex: '男'

}

//首先有Object.keys()的方法拿到可迭代(遍历)的私有属性名的集合(数组)

var keys = Object.keys(person);

        for (var i = 0; i < keys.length; i++) {

        console.log(keys[i] + ":" + person[keys[i]]); // 输出:  name:tom      age: 29        sex: '男'    

}

这么小众的方法为什么要知道呢?因为工作中如果用 for...in 遍历会出缺陷:

for in 典型的缺陷:

var  arr = [1, 2, 3, 4];

正常情况:

for (var i in arr) {

    console.log(i);

} //输出 0 1 2 3

忽然某一天你用 for...in 遍历一个数组,你会发现你的for...in全都怀了,怎么坏了呢?

由于某些人为Array添加了一个(判断元素是不是存在数组中)的新方法 inArray;

Array.prototype.inArray = function () {

    for (var i = 0; i < this.length; i++) {

        if (this[n] === ele) {

        return true;

        }

    }

    return false;

};

//然后我们在试试 for...in 好使吗

for (var i in arr) {

    console.log(i);

}//输出 0 1 2 3  inArray

哇!!!怎么会多了一个inArray呢? inArray被遍历出来了呢?

注意底层识别属性时后扩展的属性不能被识别为有效的共有属性.


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容