>웹 프론트엔드 >JS 튜토리얼 >예제가 포함된 Javascript의 기호

예제가 포함된 Javascript의 기호

Susan Sarandon
Susan Sarandon원래의
2024-12-03 19:16:10571검색

Symbol in Javascript with Example

Symbol은 생성자가 기본 기호(기호 값 또는 그냥 기호라고도 함)을 반환하는 내장 개체입니다.  — 고유함이 보장됩니다. 기호는 다른 코드가 객체에 추가할 수 있는 키와 충돌하지 않고 다른 코드가 객체에 액세스하기 위해 일반적으로 사용하는 메커니즘에서 숨겨져 있는 고유한 속성 키를 객체에 추가하는 데 사용되는 경우가 많습니다. 이는 약한 캡슐화 또는 약한 형태의 정보 은닉을 가능하게 합니다.

예: 기호를 고유한 속성 키로 사용

javascript
Copy code
// Create unique symbols
const id = Symbol('id');
const name = Symbol('name');

// Create an object with symbol-based properties
const user = {
    [id]: 101,
    [name]: 'Alice',
    age: 25
};

// Access the symbol properties
console.log(user[id]); // 101
console.log(user[name]); // "Alice"

// Add another property using a symbol
const email = Symbol('email');
user[email] = 'alice@example.com';

console.log(user[email]); // "alice@example.com"

// Symbols are not enumerable in for...in loops or Object.keys
for (const key in user) {
    console.log(key); // Only "age" is logged
}

console.log(Object.keys(user)); // ["age"]

// You can still access all properties if you know the symbol keys
console.log(Object.getOwnPropertySymbols(user)); // [Symbol(id), Symbol(name), Symbol(email)]


예: Symbol.iterator를 사용하여 객체를 반복 가능하게 만들기

javascript
Copy code
const collection = {
    items: ['apple', 'banana', 'cherry'],
    [Symbol.iterator]() {
        let index = 0;
        const items = this.items;
        return {
            next() {
                if (index < items.length) {
                    return { value: items[index++], done: false };
                } else {
                    return { done: true };
                }
            }
        };
    }
};

// Iterate over the object
for (const item of collection) {
    console.log(item);
}
// Output:
// apple
// banana
// cherry

이 예는 Symbol.iterator가 for...of를 사용하여 사용자 정의 객체를 반복하는 방법을 보여줍니다.

인기 있는 npm 라이브러리에서 사용할 수 있는 기호:

예: 인기 있는 npm 라이브러리에서 기호 사용

Symbol 사용의 주목할만한 예는 Node.js용 웹 애플리케이션 프레임워크로 널리 사용되는 Express.js 프레임워크입니다. Express.js에서는 고유한 속성 키를 정의하기 위해 기호를 사용하여 사용자 정의 속성과의 충돌 가능성을 방지합니다.

Express.js의 코드 조각:

javascript
Copy code
// In Express.js, a symbol is used to define a unique property key
const app = express();
app[Symbol('router')] = router;

이 스니펫에서 Symbol('router')는 앱 개체의 속성 키 역할을 하는 고유 기호를 생성합니다. 이 접근 방식을 사용하면 라우터 속성이 고유하고 앱 개체에 추가될 수 있는 다른 속성을 방해하지 않습니다.

라이브러리에서 기호 사용의 이점:

  • 고유성: 기호는 속성 키가 고유함을 보장하여 실수로 덮어쓸 위험을 줄입니다.
  • 불변성: 일단 생성된 기호는 변경할 수 없으므로 안정적인 식별자를 제공합니다.
  • 비열거성: 기호로 키가 지정된 속성은 루프에서 열거할 수 없으므로 노출되어서는 안 되는 내부 속성에 도움이 될 수 있습니다.

위 내용은 예제가 포함된 Javascript의 기호의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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