美文网首页
for in、for of

for in、for of

作者: 呆桃冲鸭冲鸭 | 来源:发表于2021-03-03 12:54 被阅读0次

    for-in是ES5标准,遍历的是key(可遍历对象、数组或字符串的key)
    使用for in会遍历出所有的可枚举属性,包括原型。例如上面的原型方法method和name属性
    如果不想遍历出原型方法和属性的话,需要在内部通过hasOwnPropery方法,判断该属性是否是该对象的实例属性。

    for in 循环返回的值都是数据结构的键名。
    遍历对象返回的是对象的key值,遍历数组返回的是数组的下标,还会遍历原型上的值和手动添加的值。

    var obj={
        a:1,
        b:2,
        c:3
    };
    Object.prototype.method = function(){
        console.log(this)
    }
    for(let key in obj){
        console.log(key); //a b c method
        if(obj.hasOwnProperty(key)){
            console.log(key); //a b c 
        }
    }
    

    for-of是ES6标准,遍历的是value(可遍历对象、数组或字符串的value),不包括数组的原型属性method和索引name
    for of不同于forEach,for of是可以break,continue,return配合使用,for of 循环可以随时退出循环。
    遍历对象:让对象用for of:可以使用Object.keys()获取对象的key值集合,在用for of。

    var arr=[1,2,3,4,5];
    Object.prototype.fn = function(){
        console.log(this.length,'====length')
    }
    arr.name="数组";
    for(let val of arr){
        console.log(val); 
    }
    // 让对象用for of:
    var obj = {name: 'saucxs',age: 18, sex: 1};
    for(var key of Object.keys(obj)){
        console.log(key, obj[key]);
        // name saucxs
        // age 21
        // sex 1
    }
    

    相关文章

      网友评论

          本文标题:for in、for of

          本文链接:https://www.haomeiwen.com/subject/hmutqltx.html