JavaScript Symbol について

Symbol を使用することでユニークな値を作ることができます。

主に、オブジェクトのキーに使うことで、キーの重複を防ぐことで活用できます。

まず、Symbolの特性として、必ずユニークになります。

const mykey = Symbol('key');
const mykey2 = Symbol('key');

console.log(mykey === mykey2); //false

Objectに対して独自のメソッドを追加しようとした時に、名前がかぶってしまって意図せず上書きされてしまうことがあります。

Object.prototype.myFunc = () => 'Hello myFunc';
Object.prototype.myFunc = () => 'Hi myFunc';

console.log(Object.myFunc()); // Hi myFunc 上書きされてしまう

Symbol を使うと、キーの重複を防ぐことができます。

const myFunc = Symbol('myFunc');
const myFunc2 = Symbol('myFunc');

Object.prototype[myFunc] = () => 'Hello myFunc';
Object.prototype[myFunc2] = () => 'Hi myFunc';

console.log(Object[myFunc]()); // Hello myFunc
console.log(Object[myFunc2]()); // Hi myFunc