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)]
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 라이브러리에서 기호 사용
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!