with
私は最近、オブジェクトを現在のスコープとしてブロックを実行することを JavaScriptで発見しました。関数で同じことを行い、それを別のスコープで呼び出すためのJavaScriptマジックがあるかどうか、私は興味があります。
例:
var scope = { foo: 'bar' },
foo = 'baz';
function func(){
return foo;
}
with(scope){
foo; // foo is 'bar'
func(); // foo is still 'baz'
}
この例でwith
は、変数のスコープを変更しますが、関数は定義された場所foo
の外でスコープを引き続き使用します。with
関数のスコープを変更または再バインドする方法について何か提案はありますか?