Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. Symbols have individual identities and thus don’t travel across realms as smoothly as other primitive values. That is a problem for symbols such as Symbol.iterator that should work across realms: If an object is iterable in one realm, it should be iterable in others, too. If a cross-realm symbol is provided by the JavaScript engine, the engine can make sure that the same value is used in each realm. For libraries, however, we need extra support, which comes in the form of the global symbol registry: This registry is global to all realms and maps strings to symbols. For each symbol, libraries need to come up with a string that is as unique as possible. To create the symbol, they don’t use Symbol(), they ask the registry for the symbol that the string is mapped to. If the registry already has an entry for the string, the associated symbol is returned. Otherwise, entry and symbol are created first.
  2.  
  3. <iframe srcdoc="<script>var sym = Symbol(); var obj = {}; obj[sym] = 123;</script>">
  4. </iframe>
  5. <script>
  6. const iframe = document.querySelector('iframe');
  7. const content = iframe.contentWindow;
  8. const value = content.obj[content.sym]
  9. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement