# Javascript call function by name

**URL:** <https://discuss.kotlinlang.org/t/javascript-call-function-by-name/616>\
**Category:** Uncategorized\
**Created:** [March 25, 2014, 11:34am UTC](https://discuss.kotlinlang.org/t/javascript-call-function-by-name/616 "2014-03-25T11:34:40Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![vetvicka](https://avatars.discourse-cdn.com/v4/letter/v/4da419/32.png) [@vetvicka](https://discuss.kotlinlang.org/u/vetvicka)\
**Post date:** [March 25, 2014, 11:34am UTC](https://discuss.kotlinlang.org/t/javascript-call-function-by-name/616/1 "2014-03-25T11:34:40Z")

</div>

I would like to call a function by its name. And possibly get list of all defined methods. For example:

```kotlin
fun loadDataAction(){...}
fun saveDataAction(){...}
...
val action = "saveData"
${{action + "Action"}}() 
```

Is there a better way to do this than using when expression?

```kotlin
when (action){
     "saveData" -> saveDataAction()
     "loadData" -> loadDataAction()
     ...
     else -> wrongAction()
}
```

It must work in javascript. So I can't use java reflection.

---

<div class="post-metadata">

**Author:** ![bashor](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/bashor/32/1431_2.png) [@bashor](https://discuss.kotlinlang.org/u/bashor)\
**Post date:** [March 25, 2014, 12:26pm UTC](https://discuss.kotlinlang.org/t/javascript-call-function-by-name/616/2 "2014-03-25T12:26:25Z")

</div>

I think the call function by name is not good way because it may be breaked, e.g. when you add or remove overloads. Additionally it'll break many IDE features like refactoring and navigation.

IMHO, when is good choise.

P.S. JS backend not support yet reflection, but it will do.
