美文网首页
获取对象键值的几种方法

获取对象键值的几种方法

作者: 一懒众衫小小小小 | 来源:发表于2024-06-03 14:48 被阅读0次

    获取对象键值的几种方法包括:

    • 1、for in
    • 2、Object.keys()
    • 3、Object.getOwnPropertyNames()
    • 4、Object.getOwnPropertySymbols()
    • 5、Reflect.ownKeys()

    下面具体探讨这些方法的特点和适用场景:

    1、for in

    主要用于遍历对象的可枚举属性,包括自有属性、继承自原型的属性。

    const obj = { name: 'abby', career: 'it' }
    Object.defineProperty(obj, 'age', {
      value: 'forever 18',
      enumerable: false
    })
    Object.prototype.protoProp1 = function () {
      console.log('proto')
    }
    Object.prototype.protoProp2 = 2
    
    console.log('For In : ')
    for (const a in obj) console.log(a)
    
    image.png

    2、Object.keys()

    这是一个基础且常用的方法,它返回一个包含对象所有可枚举属性名称的数组
    该方法不会列出原型链上的属性,只关注对象自身的直接属性。
    例如,对于对象let obj = {a: 1, b: 2}; Object.keys(obj)将返回['a', 'b']。
    此方法适用于大多数日常开发需求,特别是当你需要知道对象有哪些直接属性时。

    3、Object.getOwnPropertyNames()

    与Object.keys()不同,Object.getOwnPropertyNames()不仅返回可枚举的属性名,还返回不可枚举的属性名
    这意味着,如果对象的属性被标记为不可枚举(使用Object.defineProperty()),Object.keys()将无法看到这些属性,而Object.getOwnPropertyNames()则可以。

    4、Object.getOwnPropertySymbols()

    此方法专注于获取对象的所有Symbol类型的键
    由于Symbol是一种特殊的数据类型,用于创建唯一的标识符,因此这个方法在处理具有Symbol键的对象时非常有用。
    例如,如果你有一个使用Symbol作为键的对象,并且你想复制这个对象或遍历它的属性,你可以使用这个方法来获取所有的Symbol键。

    5、Reflect.ownKeys()

    这是一个更全面的方法,返回对象自身的所有键,包括字符串和Symbol类型的键,以及可枚举和不可枚举的键。这使它成为获取对象所有自有属性的最全面的方法
    与Object.keys()相比,Reflect.ownKeys()提供了对对象属性的更完整的视图,特别是在涉及不可枚举属性或Symbol属性时。

    以下是关于这些方法的使用场景及注意事项

    当需要列出对象的所有自有属性(不论可枚举性)时,Reflect.ownKeys()是最合适的选择。
    如果只关心对象的可枚举属性,可以使用Object.keys()。这是最常用的方法,适用于大多数情况。
    当对象可能包含不可枚举属性时,应使用Object.getOwnPropertyNames()来确保不遗漏任何属性。
    对于使用Symbol作为键的对象,Object.getOwnPropertySymbols()是唯一的选择。
    在实际开发中,根据具体需求选择合适的方法,可以有效地解决问题并优化性能。

    相关文章

      网友评论

          本文标题:获取对象键值的几种方法

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