1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【javascript】Symbol

Posted at

Symbol

  • プロパティの重複を避けるために、必ず一意の値を返す関数。
  • Symbolというプリミティブのデータ型
  • Symbol('名前をつけることができる。')

case1

一意の値を返すとはなにか?


const s1 = Symbol('hello');
const s2 = Symbol('hello');

//コンソール上は同じ出力となる。
console.log(s1) >> Symbol(hello)
console.log(s2) >> Symbol(hello)

//しかし、内部的には違うものとなる。
console.log(s1 === s2) >>>false

case2

どのような時に使うのか?

ES5からES6にupdateする時に、既存のコードが新しいバージョンと重複せずに動作することを目的に作られた。

  • 例えば、Stringに新しいメソッドを追加したい場合にSymbolを使用して一意のメソッドを追加することができる。
  • シンボルを登録するときはブラケット記法[]となる。
  • 登録したメソッドを使用するときは関数名[シンボル変数]()となる。

const s1 = Symbol('hello');

String.prototype[s1] = function() {
       return 'hello ' + this;
}

const tom = 'Tom'; 
console.log(tom[s]());

スクリーンショット 2021-11-19 16.00.40.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?