Harmony Proxies を試していて、コードを Proxy コンテキストで実行したいと考えています。つまり、コードのグローバル オブジェクトは Proxy になります。たとえば、コードで関数 foo() を呼び出すと、プロキシの get() メソッドによって管理されます。
しかし、Proxy.create() と vm.runInNewContext() を使用しても機能しません。Proxy オブジェクトが新しいコンテキスト オブジェクトによって上書きされ、プロパティが失われているようです。
var vm = require('vm');
var proxy = Proxy.create({
get: function(a, name){
return function(){
console.log(arguments);
}
}
});
vm.runInNewContext("foo('bar')", proxy); // ReferenceError: foo is not defined
私がやろうとしていることを達成する方法はありますか?
// 編集
(function() {
eval("this.foo('bar')");
}).call(proxy);
上記のコードはうまく機能しますが、this
ステートメントを使用せずに、グローバル コンテキストを直接参照できるようにしたいと考えています。