[解決済み] シンボルをES6に導入する動機は何ですか?
2022-03-25 11:59:15
質問
<ブロッククオートアップデイト : 最近 Mozillaの輝かしい記事 が出てきました。気になる方は読んでみてください。
ご存知の通り、彼らは
を含める予定です。
ECMAScript 6 の新しい Symbol プリミティブタイプ (他のクレイジーなものは言うまでもありません)。私はいつも
:symbol
Rubyでは、JavaScriptのようにプレーンな文字列で代用することができるのです。そして今、彼らはJSでそれを使って物事を複雑にしようと決めている。
動機がよくわからない。誰か、JavaScriptにシンボルが本当に必要なのか、説明してくれないかな?
どのように解決するのですか?
Javascriptにシンボルを導入する当初の動機は、以下のことを可能にすることでした。 プライベート プロパティがあります。
しかし、残念なことに、これらは大幅にダウングレードされることになりました。リフレクションで見つけることができるので、もはやプライベートなものではありません。
Object.getOwnPropertySymbols
またはプロキシを使用します。
と呼ばれるようになりました。 ユニーク シンボルであり、その使用目的はプロパティ間の名前の衝突を避けることのみです。例えば、ECMAScript 自身は、ユーザー名と衝突するリスクを負うことなく、オブジェクトに置くことができる特定のメソッド(例えば、その反復プロトコルを定義する)を介して拡張フックを導入することができるようになりました。
それが、言語にシンボルを追加する動機として十分に強いかどうかは、議論の余地があります。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] JavaScriptの「new」キーワードとは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] HTMLで表示される上下の三角形(軸のない矢印)に使用できる文字は何ですか?
-
[解決済み] ES6インポートで中括弧を使用するのはどのような場合ですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの関数この指摘の問題を説明
-
Vue+ElementUIによる大規模なフォームの処理例
-
vueのグローバルがscss(mixin)を導入。
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
Vueのクラススタイルの使い方の詳細
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方
-
[解決済み] JavaScript ES6クラスにおけるプライベートプロパティ