2

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関数のスコープを変更または再バインドする方法について何か提案はありますか?

4

2 に答える 2