javascriptで文字列から同じ名前の関数を実行する
perlでよくやるんですが、
これと似たようなことをjavascriptでやってみたくなったので、
備忘録がてらメモします。
evalを使う方法とか、何パターンかあったけど、
採用したのは以下の方法。
#!/usr/bin/perlと書くと、
use strict;
use warnings;
my $obj = new Foo;
$obj->func('foo'); # 'foo'という文字列を渡すと、foo()を実行してくれる
package Foo;
sub new {
my ($class) = @_;
return bless {}, $class;
}
sub func {
my ($self, $name) = @_;
$self->$name(); # ここが肝
}
sub foo {
my ($self, $name) = @_;
warn "OK";
}
satoshi@debian:~/$ perl func.plと、文字列から同じ名前の関数を実行することができます。
OK at func.pl line 23.
これと似たようなことをjavascriptでやってみたくなったので、
備忘録がてらメモします。
evalを使う方法とか、何パターンかあったけど、
採用したのは以下の方法。
var Obj = {};もっといい方法がないか、引き続き調査してみる。
Obj.func = function (type, params){
if(typeof this[type] == 'function'){
this[type](params);
}
};
Obj.foo = function (params){ console.log('foo function') };
Obj.func('foo', {});