是否可以检查全局注册中是否有符号?
我的所作所为:
global[Symbol.for('childoftheelderblood')] = true;
//In another file/window/universe
if(!global[Symbol.for('childoftheelderblood')]) console.error('Sorry, but your Ciri is in another universe');
如果并行Universe中没有global
,该怎么办?只有符号是跨维度和通用的。我可以以某种方式检查是否已在全局注册表中创建符号,而不像Symbol.for
那样实际创建符号。
答案 0 :(得分:1)
是否可以检查全局注册表中是否有符号?
没有。全局注册表中的符号不会被创建"它们会从中获取。您可以想象注册表已经包含所有可能的符号 - 当然它们是在实际实现中懒惰地(根据需要)创建的。
全局符号注册表不是通信渠道 1 。它不能变异。它所做的只是提供对公共符号的访问,以便它们可以用作共享对象的属性。
如果您有多个域并且想要在它们之间传递childoftheelderblood = true
位,则需要使用环境提供的共享缓冲区,存储或消息传递来明确地执行此操作。
1:如果是,那将是一个巨大的安全漏洞,可以泄漏信息