While it's a terrible idea to call a method that is entered by the user, but in language like Ruby you can call method() on an Object using a.method(), but you can also use send(method_name, other_object), for example:
$ ruby -e "p '1234abc'.send(:to_i)"
1234
ruby -e "puts '1234ab'.method(:to_i).call"
1234
Another Example:
ruby -e "n1, n2 = 5, 6 ; puts %i(+ - * / fdiv).map { |x| %[#{n1} #{x} #{n2} = #{n1.send(x, n2)}] }"
5 + 6 = 11
5 - 6 = -1
5 * 6 = 30
5 / 6 = 0
5 fdiv 6 = 0.8333333333333334
Another example:
$ ruby -e "puts ; n = ->n { print %(Enter #{n}: ) ; STDIN.gets.strip } ; num1 = n.('first value') ; num2 = n.('second value') ; meth = n.('method name') ; puts num1.to_i.send(meth, num2.to_i)"
Enter first value: 5
Enter second value: 10
Enter method name: *
50
$ ruby -e "puts ; n = ->n { print %(Enter #{n}: ) ; STDIN.gets.strip } ; num1 = n.('first value') ; num2 = n.('second value') ; meth = n.('method name') ; puts num1.to_i.send(meth, num2.to_i)"
Enter first value: 50
Enter second value: 20
Enter method name: fdiv
2.5
Can I do the same with JS?
For example:
var foo = '+'
1.call(foo, 2) # => 3
8.call('*', 5) # => 40
'Hello World'.call(split, ' ') # => ["Hello", "World"]