js 심볼
심볼 Symbol
- 심볼은 유일한 식별자임을 보장한다.
- 심볼을 선언하고 그 값을 특정 객체의 변수나 메서드로 주입 가능하다.
- 심볼은 keys 나 values 등을 추출하는 메서드를 통해 검출되지 않는다. 그러므로 기존에 존재하는 객체를 유지하며 원하는 값이나 기능을 넣을 수 있다.
- 특히, 객체는 생성 이후 프로퍼티를 넣을 수 있지만, 메서드는 넣을 수 없다. 심볼에 메서드를 대입하고, 그 값을 객체에 주입할 수 있다. 그러므로 기존의 코드를 수정하기 어렵거나 혹은 외부 라이브러리로 사용하며, 메서드의 추가가 필요한 경우, 효과적으로 사용할 수 있다.
function User(name, age){
this.name = name;
this.age = age;
}
const user = new User('Kim', 12);
// 메서드를 주입할 수 없다.
// user.hello() = function(){
// console.log("hi");
// }
const hello = Symbol('method to greet');
user.hello = function(){
console.log("hi");
}
user.hello();