1

私は多くのユーザー生成コードを使ったプロジェクトに取り組んでいます(このビデオhttp://vimeo.com/36579366に触発されました)。私がやりたいのは、ユーザー入力コードのチャンクをeval()し、変数が定義されるか、2つの変数が乗算されるか、または他のアクションが発生するたびに関数を実行することです。

JSでこれを行う方法はありますか?

明らかに、フィールドで「var ...」を検索し、次に来るものを読んで、その情報で必要なことは何でもすることができますが、いくつかの理由から、「合法的に」どこで行うかを選択します。私は実際に何かが実行されていることに反応します。

4

1 に答える 1

0

Intercession APIは、特定のバージョンのJavascript(プロキシとも呼ばれます)で使用できます。これから、独自のコードを作成することにより、オブジェクトが変異したときに何が起こるかを再定義できます。

それが不可能な場合でも、変数の名前を事前に知っている場合は、Object.watchのセッター、ゲッター、またはポリフィルを使用して同じ効果を得ることができます。

変数名がわからない場合は、Esprimaなどのパーサーを介してユーザー定義のJavascriptを実行し、ASTを取得することをお勧めします。これにより、変数が定義されている(または引き上げられている)場合に、任意の構文をASTに直接挿入し、コンパイルして動作するコードに戻すことができます。でJSONオブジェクトを探します"type": "VariableDeclaration"

于 2013-02-11T20:16:36.807 に答える