ES6にシンボルを導入する動機は何ですか? 質問する

ES6にシンボルを導入する動機は何ですか? 質問する

ご存知のとおり、含める予定ECMAScript 6 の新しい Symbol プリミティブ型 (他のクレイジーな機能も言うまでもありません)。私はいつも、:symbolRuby のこの概念は不要だと思っていました。JavaScript のように、代わりに単純な文字列を簡単に使用できます。そして今、彼らは JS でそれを複雑にすることに決めました。

動機がわかりません。JavaScript にシンボルが本当に必要なのかどうか、誰か説明してくれませんか?

ベストアンサー1

JavaScriptにシンボルを導入した当初の動機は、プライベートプロパティを有効にすることでした。提案当初は「私名」とも呼ばれていました。

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

これらは現在、一意のシンボルとして知られており、その唯一の使用目的は、プロパティ間の名前の衝突を避けることです。たとえば、ECMAScript 自体は、ユーザー名と衝突するリスクなしに、オブジェクトに配置できる特定のメソッド (反復プロトコルを定義するなど) を介して拡張フックを導入できるようになりました。

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

おすすめ記事