1. ホーム
  2. javascript

[解決済み] シンボルをES6に導入する動機は何ですか?

2022-03-25 11:59:15

質問

<ブロッククオート

アップデイト : 最近 Mozillaの輝かしい記事 が出てきました。気になる方は読んでみてください。

ご存知の通り、彼らは を含める予定です。 ECMAScript 6 の新しい Symbol プリミティブタイプ (他のクレイジーなものは言うまでもありません)。私はいつも :symbol Rubyでは、JavaScriptのようにプレーンな文字列で代用することができるのです。そして今、彼らはJSでそれを使って物事を複雑にしようと決めている。

動機がよくわからない。誰か、JavaScriptにシンボルが本当に必要なのか、説明してくれないかな?

どのように解決するのですか?

Javascriptにシンボルを導入する当初の動機は、以下のことを可能にすることでした。 プライベート プロパティがあります。

しかし、残念なことに、これらは大幅にダウングレードされることになりました。リフレクションで見つけることができるので、もはやプライベートなものではありません。 Object.getOwnPropertySymbols またはプロキシを使用します。

と呼ばれるようになりました。 ユニーク シンボルであり、その使用目的はプロパティ間の名前の衝突を避けることのみです。例えば、ECMAScript 自身は、ユーザー名と衝突するリスクを負うことなく、オブジェクトに置くことができる特定のメソッド(例えば、その反復プロトコルを定義する)を介して拡張フックを導入することができるようになりました。

それが、言語にシンボルを追加する動機として十分に強いかどうかは、議論の余地があります。