2016-06-14 3 views
0

я хочу, чтобы иметь возможность «отражать» параметры функции и получить их имена, он должен работать для деструктурированных параметров объекта, а также, например,Как разобрать имена параметров функции в ES6

parseParams('({a, b}) => 1') 

и я хочу результат чтобы быть что-то вроде

[["a", "b"]] 

так вот я знаю, что функция а первый аргумент, который является объектом с ключами & б. Я ожидаю, что какой-то код, как это существует где-то внутри кишок Вавилонской, но я не могу найти его легко

+0

Пожалуйста, обратитесь к следующей вопрос http://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically-from-javascript – dmlittle

+1

Вавилон использует [Вавилон] (https://github.com/babel/babylon) для разбора кода ES6. Есть и другие, например. [Esprima] (http://esprima.org/). – Bergi

+0

@dmlittle: Ни один из них не содержит полный парсер ES6. – Bergi

ответ

1

я нашел способ с Вавилоном

const parsed = require("babylon").parse('({a,b}) => 1', { 
      sourceType: 'script' }); 

    // the keys of the object will be available as 
const key1 = parsed.program.body[0].expression.params[0].properties[0].key.name // a 
const key2 = parsed.program.body[0].expression.params[0].properties[1].key.name // b 

работает демо https://tonicdev.com/57205506e8bb3a1100675026/575fa8ce3154641300347910

Смежные вопросы