Функция «аннотации» является хорошим решением для того, что вы пытаетесь сделать. В настоящее время он реализован в Traceur (см. здесь ). Аннотации используют синтаксис @
следующим образом:
@Anno('foo')
function func() {}
По сути это эквивалентно
function func() {}
func.annotate = [ new Anno('foo') ];
Аннотации также можно размещать на классах ES6.
Даже если вы не можете или не хотите использовать новый синтаксис аннотации, добавление функций со свойствами для хранения их метаданных представляется более подходящей идеей, чем встраивание таких метаданных в тело функции, будь то в виде комментариев или иным образом Идея является чем-то аналогичным "use strict"
), а затем пытается извлечь его, используя манипуляции со строками.
Функция аннотации все еще находится на стадии обсуждения, и существуют параллельные предложения для вариантов, называемых «декораторами» и т. Д. Как вы, вероятно, знаете, сама концепция не нова и встречается в других языках, таких как Python, Java, и C #. Аннотации рассматриваются для включения в языковые версии, включая AtScript, TypeScript и ES7.
См. Также Аннотации JavaScript . Для подхода, основанного на синтаксическом анализе, см. http://ariya.ofilabs.com/2014/04/tracking-javascript-annotations.html.