Arrays, symbols, and Realms


isArray polypill:
Object.prototype.toString.call(arg) === '[object Array]’;

isArray 能跨 realms

Array 在不同 realms 不同

已知 symbol 在不同 realms 相同

// realm 类似 nodejs 的 vm
  • Function // 提供非严格模式环境执行 with
  • with(proxy) // 将全局名称查找转换为属性查找,默认包含 iframe 的 js 全局对象
  • eval // iframe 中的所以没有主域 csp 限制,间接调用
实现相关细节:
```
new iframe.contentWindow.Function('code', 'sandbox', 'with(sandbox){eval(code)}')
```

  • The ShadowRealm#importValue() method, equivalent to the import() expression, but capturing a primitive or callable values.
  • The get ShadowRealm#evaluate method promotes an indirect eval in the shadowRealm but only allows the return of primitive or callable values.
// 如何向 ShadowRealm 导入全局变量?// Node.js vm.createContext 能指定上下文对象
// 需要和 WebAssembly 一样的 memory 管理,或者同步的共享内存管理方案