在前端开发中,我们经常需要操作对象。ECMAScript 2019(也称为 ECMAScript 10)引入了两个新的方法 Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols(),可以让我们更加高效灵活地操作对象。
Object.getOwnPropertyNames()
Object.getOwnPropertyNames() 方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性)组成的数组。如果对象没有自身属性,则返回空数组。
语法
Object.getOwnPropertyNames(obj)
参数
- obj:要返回其属性的对象。
返回值
一个由指定对象的所有自身属性的属性名组成的数组。
示例
const obj = { name: '张三', age: 18, [Symbol('gender')]: 'male' }; console.log(Object.getOwnPropertyNames(obj)); // ['name', 'age']
上述代码中,obj 对象有三个属性:name、age 和一个 Symbol 类型的属性 gender。Object.getOwnPropertyNames() 方法返回一个数组,包含 obj 对象的所有自身属性的属性名,即 ['name', 'age']。
Object.getOwnPropertySymbols()
Object.getOwnPropertySymbols() 方法返回一个由指定对象的所有自身 Symbol 类型的属性名组成的数组。如果对象没有自身 Symbol 类型的属性,则返回空数组。
语法
Object.getOwnPropertySymbols(obj)
参数
- obj:要返回其属性的对象。
返回值
一个由指定对象的所有自身 Symbol 类型的属性名组成的数组。
示例
const obj = { name: '张三', age: 18, [Symbol('gender')]: 'male' }; console.log(Object.getOwnPropertySymbols(obj)); // [Symbol(gender)]
上述代码中,obj 对象有三个属性:name、age 和一个 Symbol 类型的属性 gender。Object.getOwnPropertySymbols() 方法返回一个数组,包含 obj 对象的所有自身 Symbol 类型的属性名,即 [Symbol(gender)]。
使用场景
Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 方法可以在以下场景中使用:
- 遍历对象的所有属性。
-- -------------------- ---- ------- ----- --- - - ----- ----- ---- --- ------------------- ------ -- ----- ---------- - - ----------------------------------- ------------------------------------ -- --------------------------- -- - ------------------------- ------------------- ---
上述代码中,使用扩展运算符将 Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 方法返回的数组合并成一个数组 properties,然后遍历该数组,打印出每个属性的值。
- 判断对象是否包含某个属性。
-- -------------------- ---- ------- ----- --- - - ----- ----- ---- --- ------------------- ------ -- -- -------------------------------------------------- - ---------------- -- ---- ----- - -- -------------------------------------------------------------- - ---------------- -- ------ ----- -
上述代码中,使用 Object.getOwnPropertyNames() 方法判断 obj 对象是否包含 name 属性,使用 Object.getOwnPropertySymbols() 方法判断 obj 对象是否包含 Symbol 类型的属性 gender。
总结
Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 方法可以让我们更加高效灵活地操作对象。在实际开发中,我们可以根据实际需求灵活运用这两个方法,提高开发效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/660f5fa1d10417a222fd553c