【发布时间】:2017-04-11 16:44:34
【问题描述】:
我想制作一个将字符串映射到符号的字典,以便我可以为对象分配一个唯一的“t”属性,该属性始终指向一个唯一的符号。
我不知道如何从符号中取出符号内的原始字符串,以便查找符号表以检查符号的有效性。
示例代码如下:
var t = {
'Box': Symbol("Box")
};
var Box = (function() {
var Box = function(x) {
this.t = t['Box'];
this.x = x;
};
return Box;
})();
var q = new Box(2);
console.log(q);
console.log(q.t);
我想知道是否可以在不使用正则表达式或创建包含字符串“Box”和符号“Box”的新结构的情况下从符号 Symbol(Box) 中取出字符串“Box” (这可能是最好的第二种解决方案)。
【问题讨论】:
-
“以便我可以查找符号表以检查符号的有效性”是什么意思,为什么需要符号的描述?符号的全部意义不是使用字符串比较,而是依赖符号的标识。
-
假设我使用符号识别对象;我不能使用 Symbol 作为我的字典的键。即使我知道 foo.t 是 Symbol(Box),我也无法检查它是来自表 1、表 2、表 3 还是来自碰巧有 Box 的外部脚本中的某个表中的 Symbol(Box)。为了解决这个问题,我需要获取符号字符串,并通过查找“框”并给我符号(框)的字符串来查找我的特定符号表,我可以将此符号与此特定符号(框)进行比较.
-
当然,您可以使用符号作为字典的键——属性键不必是字符串,它们也可以是符号。或者,您可以为您的表使用数组、集合或映射。正如我所说,使用字符串进行查找会破坏符号的全部用途,您可以立即将字符串存储在
.t中。如果两个模块使用相同的符号描述,它们就会发生冲突。
标签: javascript symbols