我正在开发一个使用ES6的应用程序,其中涉及将一些数据发送到网络。其中一部分涉及作为ES6 Symbol实现的标识符。例如:
const FOO = Symbol('foo');
调用
Foo.toString()
会返回 Symbol(foo)
。当我将它们通过网络传输时,我想将其作为 foo
传递。然而,据我所知,除了使用正则表达式(具体来说是 /^Symbol\((.*)\)$/
)之外,没有其他方法可以从 Symbol(foo)
中提取 foo
。
我应该依赖于正则表达式始终匹配吗?或者未来 ES6 的更新是否可能会破坏这一点?如果我不能依赖于正则表达式匹配,那么我将只能将其作为 Symbol(foo)
发送到网络上。
/^Symbol\((.*)\)$/
,然后使用第一个捕获组作为名称。已添加到问题中。 - Ryan Kennedy"Symbol(" + description + ")"
。你最好使用FOO.toString().slice(7, -1)
,因为符号描述本身可能包含括号、换行等。例如,.
不匹配换行符。 - Sebastian Simon