ECMAScript не предоставляет доступа к внутренним слотам [[ProxyHandler]] и [[ProxyTarget]].
Некоторые реализации могут предоставлять некоторые нестандартные способы, но не воспринимают это как должное.
Например, в привилегированном коде Firefox вы можете узнать, является ли объект прокси-сервером с помощью
Components.utils.isProxy(object);
Я предложил реализовать аналогичные методы, чтобы показать [[ProxyHandler]] и [ [ProxyTarget]]. Они сказали мне реализовать их в Debugger.Object
вместо Components.utils
.
Когда патч земли, можно будет использовать что-то вроде
Components.utils.import('resource://gre/modules/jsdebugger.jsm');
var Cc = Components.classes;
// Add a debugger to a new global
var global = new Components.utils.Sandbox(
Cc["@mozilla.org/systemprincipal;1"].createInstance(Ci.nsIPrincipal),
{ freshZone: true }
);
addDebuggerToGlobal(global);
var dbg = new global.Debugger().addDebuggee(this);
// Create a debugger object of your object, and run proxy getters
var dbgObj = dbg.makeDebuggeeValue(object);
if(dbgObj.isProxy) { // a boolean
dbgObj.proxyHandler.unsafeDereference(); // the [[ProxyHandler]]
dbgObj.proxyTarget.unsafeDereference(); // the [[ProxyTarget]]
}