美文网首页
JS对象属性遍历工具对比

JS对象属性遍历工具对比

作者: 多米帕帕 | 来源:发表于2019-12-13 16:45 被阅读0次
    const proto = {
        p1 : "a"
    }
    
    const subObj = Object.create(proto);
    subObj.sp1 = "b";
    
    const sp2 = Symbol.for("c");
    subObj[sp2] = "c";
    
    Object.defineProperty(subObj,"sp3",{
        enumerable:false,
        value:"d"
    })
    
    subObj[Symbol.iterator] = function* () {
      yield 1;
      yield 2;
      yield 3;
    };
    
    console.log(Object.keys(subObj));
    console.log("--------------")
    for(const keys in subObj){
        console.log(keys);
    }
    console.log("--------------")
    for(const keys of subObj){
        console.log(keys);
    }
    console.log("--------------")
    console.log(Object.getOwnPropertyNames(subObj));
    console.log("--------------")
    console.log(Object.getOwnPropertySymbols(subObj));
    
    

    输出结果:

    ["sp1"]
    --------------
    sp1
    p1
    --------------
    1
    2
    3
    --------------
     ["sp1", "sp3"]
    --------------
    [Symbol(c), Symbol(Symbol.iterator)]
    

    分析如下:

    Object.keys

    返回对象可枚举自身的属性。

    for in

    返回对象可枚举自身以及原型上的属性。

    for of

    只能用于可迭代对象,调用迭代钩子上的属性。

    getOwnPropertyNames

    返回对象自身所有属性,包括不可枚举属性。

    getOwnPropertySymbols

    返回对象自身Symbol属性。

    相关文章

      网友评论

          本文标题:JS对象属性遍历工具对比

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