>  기사  >  웹 프론트엔드  >  js에서 심볼은 어떤 용도로 사용되나요?

js에서 심볼은 어떤 용도로 사용되나요?

下次还敢
下次还敢원래의
2024-05-07 18:27:19384검색

Symbol은 JavaScript에서 불변의 고유 식별자로 사용됩니다. 주요 용도로는 객체의 비공개 속성, 클래스 멤버 식별, 키 매핑, 생성기 함수 반환 값 및 기타 내장 객체 속성이 있습니다.

js에서 심볼은 어떤 용도로 사용되나요?

JavaScript에서 기호 사용

Symbol은 기본적으로 변경할 수 없는 고유 식별자인 JavaScript의 고유 값 유형입니다. 주요 용도는 다음과 같습니다.

1 개체의 개인 속성으로

Symbol은 표준 for...in에 나타나지 않으므로 개체의 개인 속성으로 사용할 수 있습니다. > 루프 또는 Object.keys() 메서드. 따라서 민감한 데이터를 저장하거나 내부 상태 관리에 이상적입니다. for...in 循环或 Object.keys() 方法中。这使得它非常适合存储敏感数据或用于内部状态管理。

示例代码:

<code class="js">const user = {
  [Symbol("secretData")]: "Confidential information"
};</code>

2. 作为类成员的标识符

Symbol 可以用于标识类中的成员,例如方法或属性。这可以防止意外覆盖或冲突。

示例代码:

<code class="js">class Person {
  static [Symbol("getName")]() {
    return "John Doe";
  }
}</code>

3. 作为映射键

Symbol 可以用作映射(Map 或 WeakMap)的键。这对于创建更具可读性和可维护性的代码非常有用。

示例代码:

<code class="js">const myMap = new Map();
myMap.set(Symbol("key1"), "value1");</code>

4. 作为生成器函数的返回值

Symbol 可以用作生成器函数的返回值,以表示一个可迭代对象的唯一标识。

示例代码:

<code class="js">function* myGenerator() {
  yield 1;
  yield 2;
}

const mySymbol = Symbol.iterator;
const myIterator = myGenerator()[mySymbol]();</code>

5. 作为其他内置对象的属性

Symbol 也被用作其他内置对象的属性,例如:

  • Symbol.iterator: 表示对象的默认迭代器
  • Symbol.hasInstance: 用于检查对象是否是指定类的实例
  • Symbol.species
샘플 코드: 🎜🎜rrreee🎜🎜2. 클래스 멤버의 식별자로 🎜🎜🎜기호는 메서드나 속성과 같은 클래스의 멤버를 식별하는 데 사용할 수 있습니다. 이렇게 하면 실수로 덮어쓰거나 충돌하는 것을 방지할 수 있습니다. 🎜🎜🎜샘플 코드: 🎜🎜rrreee🎜🎜3. 맵 키로 🎜🎜🎜심볼을 맵(Map 또는 WeakMap)의 키로 사용할 수 있습니다. 이는 더 읽기 쉽고 유지 관리하기 쉬운 코드를 만드는 데 유용합니다. 🎜🎜🎜샘플 코드: 🎜🎜rrreee🎜🎜4. 생성기 함수의 반환 값으로 🎜🎜🎜Symbol을 생성기 함수의 반환 값으로 사용하여 반복 가능한 객체의 고유 식별자를 나타낼 수 있습니다. 🎜🎜🎜샘플 코드: 🎜🎜rrreee🎜🎜5. 다른 내장 객체의 속성으로 🎜🎜🎜Symbol은 다음과 같은 다른 내장 객체의 속성으로도 사용됩니다: 🎜
  • Symbol.iterator code>: 객체의 기본 반복자를 나타냅니다🎜
  • Symbol.hasInstance: 객체가 지정된 클래스의 인스턴스인지 확인하는 데 사용됩니다🎜
  • Symbol.species: 객체 생성자 반환🎜🎜

위 내용은 js에서 심볼은 어떤 용도로 사용되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.