symbol在业务层有什么应用场景

image.png

特性

Symbol 类型的 key 是不能通过 Object.keys()或者 for…in 来枚举的,它未被包含在对象自身的属性名集合 (property names) 之中。所以,利用该特性,我们可以把一些不需要对外操作和访问的属性使用 Symbol 来定义

  1. JSON.stringify(obj); // {"age":18,"title":"Engineer"}

如何获取symbol定义的key

  1. // 使用Object的API
  2. Object.getOwnPropertySymbols(obj); // [Symbol(name)]
  3. // 使用新增的反射API
  4. Reflect.ownKeys(obj); // [Symbol(name), 'age', 'title']