JavaScript对象遍历相关方法的使用,一分钟快速上手

多说无益,直接看效果
    let obj = {
      name: "Tom",
      sex: "boy",
    };
    // Object.getOwnPropertyDescriptor() 拿到指定对象的某属性的描述对象 enumerable:true 代表可枚举
    console.log(Object.getOwnPropertyDescriptor(obj, "name"));
    // {value: 'Tom', writable: true, enumerable: true, configurable: true}

    // Object.defineProperty() 设置对象的描述对象,将其可枚举属性值设为false
    Object.defineProperty(obj, "age", {
      value: "18",
      enumerable: false,
    });
    console.log(obj); // {name: 'Tom', sex: 'boy', age: '18'}

    // for in 只能遍历可枚举的属性 !!!
    for (var i in obj) {
      console.log(i, obj[i]);
      // name Tom
      // sex boy
    }
    // Object.keys() 返回可枚举的属性
    console.log(Object.keys(obj)); // ['name', 'sex']
    // Object.values() 返回可枚举属性的属性值
    console.log(Object.values(obj)); //  ['Tom', 'boy']
    // Object.getOwnPropertyNames() 返回对象的所有属性,包含不可枚举属性
    console.log(Object.getOwnPropertyNames(obj)); // ['name', 'sex', 'age']
    // Reflect.ownKeys() 返回对象的所有属性,包含不可枚举属性 (这个方法比较杂,最后还有详细说明)
    console.log(Reflect.ownKeys(obj)); //['name', 'sex', 'age']
    // Object.entries() 是 Object.values() 与 Object.keys() 的结合
    console.log(Object.entries(obj)); // [['name', 'Tom'],['sex', 'boy']]

    // Object.getOwnPropertySymbols() 返回对象内的所有Symbol属性
    // 在对象初始化的时候,内部是不会包含任何Symbol属性
    console.log(Object.getOwnPropertySymbols(obj)); // []
    let sym = Symbol();
    obj[sym] = "test";
    // 新建symbol,再添加到上面声明好的对象里,通过遍历得到Symbol()
    console.log(Object.getOwnPropertySymbols(obj)); // [Symbol()]
    // Reflect.ownKeys()返回所有属性,无论是否可枚举、symbol属性、还是继承,均会返回
    console.log(Reflect.ownKeys(obj)); // ['name', 'sex', 'age', Symbol()]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值