うーん、タイトルだけではわかりにくい。ここに例があります。関数が自動的に「注入」される変数を参照するようにします。つまり、次のようになります。
function abc() {
console.log(myVariable);
}
私は試してみました:
with({myVariable: "value"}) { abc() }
ただし、abc が with ブロック内で宣言されていない限り、これは機能しません。つまり、次のようになります。
with({myVariable: "value"}) {
function abc() {
console.log(myVariable);
}
abc(); // This will work
}
最後の部分は機能しますが、 with ステートメントを偽造することは可能ですか? または、開発者に with ステートメントで関数呼び出しを宣言させる必要がありますか?
基本的に私がやりたい呼び出しは次のとおりです。
doSomething({myVariable: "value"}, function() {
console.log(myVariable);
});
もちろん、これを 1 つのパラメーター オブジェクトとして渡すことができることは承知していますが、それは私がやろうとしていることではありません。
doSomething({myVariable: "value"}, function(M) {
console.log(M.myVariable);
});
さらに、私はeval の使用を避けようとしています:
with({myVariable: "value"}) {
eval(abc.toString())(); // Will also work
}
これは Javascript の eval を超えてまったくサポートされていませんか?