跳到主要内容

JavaScript 对象的 Object.getOwnPropertySymbols() 方法详解

Object.getOwnPropertySymbols()方法返回给定对象中所有符号属性的数组。

示例

const symbol1 = Symbol("symbol1");
const symbol2 = Symbol("symbol2");

const obj = {
property1: "value1",
[symbol1]: "value2",
[symbol2]: "value3",
};

// 获取obj的所有符号
const symbols = Object.getOwnPropertySymbols(obj);

console.log(symbols);

// 输出: [ Symbol(symbol1), Symbol(symbol2) ]

getOwnPropertySymbols()语法

getOwnPropertySymbols()方法的语法是:

Object.getOwnPropertySymbols(obj);

这里,getOwnPropertySymbols()是一个静态方法。因此,我们需要使用类名Object来访问这个方法。

getOwnPropertySymbols()参数

getOwnPropertySymbols()方法接受:

  • obj - 需要返回其符号属性的对象。

getOwnPropertySymbols()返回值

getOwnPropertySymbols()方法返回一个数组,包含给定对象中找到的所有符号属性。

注意: Object.getOwnPropertySymbols()返回对象的所有符号属性,而Object.getOwnPropertyNames()返回字符串属性。

示例:JavaScript对象Object.getOwnPropertySymbols()

// 创建一个符号id
let id = Symbol("id");

// 创建一个符号name
let name = Symbol("name");

// 创建一个对象,包含
// 符号键:id和name
// 和字符串键:age
let superhero1 = {
[id]: 102,
[name]: "Bruce Wayne",
age: 40,
};

// 获取superhero1的所有符号
let objectSymbols = Object.getOwnPropertySymbols(superhero1);

// 打印符号
console.log(objectSymbols);

// 输出: [ Symbol(id), Symbol(name) ]

在上述程序中,我们创建了一个名为superhero1的对象,包含以下属性:

  • 符号 - id和name
  • 字符串 - age

然后,我们在superhero1上使用了getOwnPropertySymbols()方法来列出其符号属性。

正如预期,我们得到了一个只列出符号id和name的数组作为输出。

推荐阅读: