Я работаю над приложением ES6, которое отправляет некоторые данные по сети. Часть этого включает идентификаторы, которые реализованы как ES6 Symbol
s. Например:Могу ли я полагаться на строковое представление символа ES6 `Symbol`?
const FOO = Symbol('foo');
Вызов Foo.toString()
урожайности Symbol(foo)
. Когда я передаю их по сети, я хотел бы передать это как foo
. Однако, насколько мне известно, нет способа извлечь foo
из Symbol(foo)
, кроме как вытащить его с помощью регулярного выражения (в частности, /^Symbol\((.*)\)$/
).
Должен ли я полагаться на регулярное выражение, всегда соответствующее? Или возможно, что будущие обновления ES6 нарушат это? Если я не могу полагаться на соответствие регулярному выражению, я просто отправлю его по проводу как Symbol(foo)
.
Какое регулярное выражение, которое вы хотели бы предложить? – Xufox
Предлагаем '/^Символ \ ((. *) \) $ /' (Затем используя первую группу захвата в качестве имени). Добавлен вопрос. –
В соответствии с [spec] (http://www.ecma-international.org/ecma-262/6.0/#sec-symbol.prototype.tostring) это всегда символ «Символ» («+ описание +») ». Вероятно, вам лучше использовать 'FOO.toString(). Slice (7, -1)', потому что описание символа может содержать круглые скобки, разрывы строк и т. Д. Например, '.' не соответствует разрыву строк. – Xufox