📜  Javascript Object getOwnPropertySymbols()方法(1)

📅  最后修改于: 2023-12-03 15:16:06.104000             🧑  作者: Mango

Javascript Object getOwnPropertySymbols()方法

Object.getOwnPropertySymbols()方法返回一个数组,其中包含对象自身的所有符号属性(Symbol属性)。

语法
Object.getOwnPropertySymbols(obj)
参数:
  • obj:必选,要返回符号属性的对象。
返回值
  • 一个数组,其中包含对象自身的所有符号属性(Symbol属性)。
示例
示例1:使用getOwnPropertySymbols()获取对象符号属性
let obj = {};
let a = Symbol('a');
let b = Symbol.for('b');

obj[a] = 'localSymbol';
obj[b] = 'globalSymbol';

let symbols = Object.getOwnPropertySymbols(obj);

console.log(symbols.length); // 2
console.log(symbols); // [ Symbol(a), Symbol(b) ]
示例2:结合Object.defineProperty()方法使用
let obj = {};

let a = Symbol('a');
let b = Symbol.for('b');

Object.defineProperty(obj, a, {
  value: 'localSymbol',
  enumerable: false,
  writable: false,
  configurable: false
});

Object.defineProperty(obj, b, {
  value: 'globalSymbol',
  enumerable: false,
  writable: false,
  configurable: false
});

let symbols = Object.getOwnPropertySymbols(obj);

console.log(symbols.length); // 2
console.log(symbols); // [ Symbol(a), Symbol(b) ]
注意事项
  • getOwnPropertySymbols()方法只会返回对象自身的符号属性,不会返回原型链上的符号属性。
  • getOwnPropertySymbols()方法返回的符号属性数组是基于插入顺序的。即使修改了对象的符号属性,数组的顺序也不会改变。
  • 要访问对象的符号属性,必须使用[]符号运算符。因为符号属性不是字符串。