Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(map-and-set): Symbol as WeakMap Keys #1684

Merged
merged 3 commits into from
Aug 3, 2023
Merged

fix(map-and-set): Symbol as WeakMap Keys #1684

merged 3 commits into from
Aug 3, 2023

Conversation

azu
Copy link
Collaborator

@azu azu commented Aug 3, 2023

概要

ES2022までは、WeakMapのキーとWeakSetの値にはオブジェクトのみが指定可能でした。
これは弱い参照をGCで解放するために、キーは一意な値のみが指定可能という制限からくるものでした。
Symbolも一意な値となるため、ES2023ではオブジェクトに加えてSymbolも指定できるように仕様が変更されました。

ページ

変更内容

  • WeakMapのキーに指定可能なものとしてSymbolを追加
  • WeakSetの値に指定可能なものとしてSymbolを追加

関連

Preview

@azu azu linked an issue Aug 3, 2023 that may be closed by this pull request
1 task
@azu azu added the Lang: ES2023 ECMAScript 2023 label Aug 3, 2023
@azu
Copy link
Collaborator Author

azu commented Aug 3, 2023

現時点ではFirefoxは未対応だけど、文章だけの変更になるので入れてしまう

@bot-user
Copy link

bot-user commented Aug 3, 2023

Deploy Preview for js-primer ready!

Name Link
🔨 Latest commit a85c3a9
🔍 Latest deploy log https://app.netlify.com/sites/js-primer/deploys/64cb57992abb990008eada0f
😎 Deploy Preview https://deploy-preview-1684--js-primer.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@@ -307,7 +307,7 @@ obj = null;

`WeakMap`は`Map`と似ていますがiterableではありません。
そのため、キーを列挙する`keys`メソッドや、データの数を返す`size`プロパティなどは存在しません。
また、キーを弱い参照で持つ特性上、キーとして使えるのは参照型のオブジェクトだけです
また、キーを弱い参照で持つ特性上、キーとして使えるのは参照型のオブジェクトと`Symbol`[^es2023]だけです
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

脚注にしているけど ES2023 でも別に問題ないかな。
SymbolがES2023のものに見えるのを回避したいぐらい

@azu azu merged commit 5e8735d into master Aug 3, 2023
12 checks passed
@azu azu deleted the feature/1666 branch August 3, 2023 07:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Lang: ES2023 ECMAScript 2023
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ES2023: Symbol as a Key
2 participants