1

JavaScript のテクニックを教えるプロジェクトに取り組んでいます (Code Academy など)。主に自己啓発の目的でこれを行います。

1 つの重要な部分で問題があります。プロジェクト全体が Web プロジェクトであるため、ユーザーは自分のコードを Web サイトに直接入力します。私の問題は、提出されたコードが現在の演習のすべてのテストに合格しているかどうかを確認するにはどうすればよいですか? 私のアプローチは、コードを評価し、それに対して単体テストを実行することです。ここでの問題は、評価されたコードの範囲をどのように制限し、どのようにテストできるかということです。スコープを制限する方法については、すでにここで解決策を見つけました。

function maskedEval(scr)
{
    // set up an object to serve as the context for the code
    // being evaluated. 
    var mask = {};
    // mask global properties 
    for (p in this)
        mask[p] = undefined;

    // execute script in private context
    (new Function( "with(this) { " + scr + "}")).call(mask);
}

しかし、評価されたコードに対してテストを実行する方法がわかりません。これはこれを行う正しい方法ですか、それともまったく異なる方法で行う必要がありますか?

4

1 に答える 1

2

クライアント側でコードを実行する場合、クライアント自身にのみ影響を与える可能性があるため、スコープを制限する必要はありません。

ただし、サーバー側で評価するコードを送信する場合は、http://gf3.github.io/sandbox/ ( Google で最初に見つけたもの、おそらく他にもたくさんあります)。

于 2013-08-08T20:32:32.543 に答える