Skip to main content

Object.getOwnPropertySymbols()

语法

getOwnPropertySymbols(o: any): symbol[];

描述

返回一个给定对象自身的所有 Symbol 属性的数组。

  • 包括不可枚举 Symbol 的属性

  • 不包括普通字符串作为名称的属性

  • 不会获取到原型链上的 Symbol 属性

  • 当不存在 Symbol 作为名称的属性时返回一个空数组

示例

const obj = {
firstName: 'Yancey',
[Symbol('lastName')]: 'Leo',
};

Object.defineProperty(obj, Symbol('age'), {
value: 18,
});

Object.getOwnPropertySymbols(obj); // [Symbol(lastName), Symbol(age)]

和 Object.getOwnPropertyNames() 一样,该方法不会获取到原型链上的属性,但能获得该对象自身原型上的属性。

function Dog(name, color) {
this.name = name;
this.color = color;
}

Dog.prototype[Symbol('bark')] = function() {
return '汪汪~';
};

const husky = new Dog('旺财', 'pink');

husky[Symbol('say')] = function() {
return 'say something...';
};

Object.getOwnPropertySymbols(husky); // [Symbol(say)]