2014-09-28 3 views
2

ES6 предлагает строку шаблонов, такие какOverride для обработки строк шаблона ES6 (квази-литералы)

`Hello ${name}` 

В этом случае строитель шаблон по умолчанию называется. Вы также можете использовать свою собственную «метку»:

tag`Hello ${name}` 

где tag функция, которая передается информации о строке шаблона и генерирует результат.

Мой вопрос в том, есть ли способ для переопределить функцию по умолчанию, когда не указан ни один тег?

Другой вопрос: Есть ли способ, чтобы определить, является ли функция тега вызывается системой для построения строки шаблона, по сравнению скажем вызывается непосредственно, кроме изучения первого аргумента для raw собственности?

+2

Не похоже, что есть: http://wiki.ecmascript.org/doku.php?id=harmony:quasis говорит, что значение по умолчанию является замороженной функцией (без объяснения причин), а спецификация проекта es6 не имеет значения, Кажется, у вас есть место, где вы могли бы зайти. Возможно, стоит попросить список рассылки es-discuss. – Nickolay

ответ

1

Нет. Они представляют собой разные синтаксические произведения с различными смысловыми значениями. `stuff` более похож на строковый литерал, тогда как tag`stuff` более сродни вызову функции.