Javascript 是一门弱类型语言,并且其对象是非常灵活的。因此,我们经常需要使用一些工具来处理和操作对象。ES7中,新增了 Object.getOwnPropertyNames()
和 Object.getOwnPropertySymbols()
方法来处理对象。这两个方法的主要作用是获取对象中的所有属性名称,包括普通属性和 symbol 属性。
Object.getOwnPropertyNames()
Object.getOwnPropertyNames()
方法可以获取对象中的所有属性名称,包括可枚举和不可枚举的属性,但不包含 symbol 属性。其语法如下:
Object.getOwnPropertyNames(obj)
其中,obj
是要获取属性名称的对象。
下面是一个简单的示例,说明如何使用 Object.getOwnPropertyNames()
方法:
let obj = { name: "John", age: 30, }; let keys = Object.getOwnPropertyNames(obj); console.log(keys);
执行结果为:
["name", "age"]
Object.getOwnPropertyNames()
方法返回一个数组,数组中包含所有属性名称。
Object.getOwnPropertySymbols()
Object.getOwnPropertySymbols()
方法可以获取对象中的所有 symbol 属性。其语法如下:
Object.getOwnPropertySymbols(obj)
其中,obj
是要获取属性名称的对象。
下面是一个示例,说明如何使用 Object.getOwnPropertySymbols()
方法:
let id = Symbol("id"); let obj = { name: "John", age: 30, [id]: 1001, }; let symbols = Object.getOwnPropertySymbols(obj); console.log(symbols);
执行结果为:
[Symbol(id)]
Object.getOwnPropertySymbols()
方法返回一个数组,数组中包含所有 symbol 属性的 key 值。
总结
Object.getOwnPropertyNames()
和 Object.getOwnPropertySymbols()
方法可以帮助我们获取对象中特定类型的属性名称。它们对于操作对象非常有用,特别是在编写 React 组件时很有用。此外,我们还可以使用 Object.keys()
和 Reflect.ownKeys()
方法来获取对象中的属性名称。
示例代码
下面是一个完整的示例代码,展示如何使用 Object.getOwnPropertyNames()
和 Object.getOwnPropertySymbols()
方法:
let id1 = Symbol("id1"); let id2 = Symbol("id2"); let obj = { name: "John", age: 30, [id1]: 1001, }; Object.defineProperty(obj, "gender", { value: "male", enumerable: false, }); console.log("Properties:"); let keys = Object.getOwnPropertyNames(obj); keys.forEach((key) => { console.log(`${key}: ${obj[key]}`); }); console.log("Symbols:"); let symbols = Object.getOwnPropertySymbols(obj); symbols.forEach((symbol) => { console.log(`${symbol.toString()}: ${obj[symbol]}`); });
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/659fa1adadd4f0e0ff82d81b