我ながらニッチなことをやろうとしてるなって思う・・。
普通の生活をしてる分には、活躍する出番はないはず。`eval()`はもっと使わない。
new Function()
const fn = new Function("a", "b", "return a + b"); console.log(fn(2, 6));
という使い方ができる。
ユーザーからコードみたいな文字列を受け取って実行させたいが、`eval()`ほど無秩序にはしたくない時に使う。
`Function`コンストラクタはグローバルに生えてるけど、これで非同期な処理をしたい場合は?
new AsyncFunction()
ってしたいけど、そんなものはグローバルに生えてないのでできない。
が、自作すればよいらしい。
こんな感じに。
const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor; const code = ` const a = await myClass.asyncA(); return b = myClass.asyncB(a); `; const asyncFn = new AsyncFunction("myClass", code); const res = await asyncFn(myClass);