Estos métodos que vienen a la mente, ¿cuáles son los pros y los contras de cada uno?¿Cómo puedo crear un envoltorio/proxy XMLHttpRequest?
Método 1: Aumentar instancia nativa
var _XMLHttpRequest = XMLHttpRequest;
XMLHttpRequest = function() {
var xhr = new _XMLHttpRequest();
// augment/wrap/modify here
var _open = xhr.open;
xhr.open = function() {
// custom stuff
return _open.apply(this, arguments);
}
return xhr;
}
Método 2: Sub "clase" XMLHttpRequest nativa
var _XMLHttpRequest = XMLHttpRequest;
XMLHttpRequest = function() {
// definePropertys here etc
}
XMLHttpRequest.prototype = new _XMLHttpRequest());
// OR
XMLHttpRequest.prototype = Object.create(_XMLHttpRequest);
// custom wrapped methods on prototype here
XMLHttpRequest.prototype.open = function() {
// custom stuff
return _XMLHttpRequest.prototype.open.apply(this, arguments);
}
Método 3: proxy completo a XMLHttpRequest nativa
var _XMLHttpRequest = XMLHttpRequest;
XMLHttpRequest = function() {
this.xhr = new _XMLHttpRequest();
}
// proxy ALL methods/properties
XMLHttpRequest.prototype.open = function() {
// custom stuff
return this.xhr.open.apply(this.xhr, arguments);
}
Su primer método me parece incorrecto. Me temo que entrarás en un bucle recursivo hasta que obtengas un desbordamiento de pila. ;) ¿Y por qué quieres esto de todos modos? Hay muchas soluciones más ordenadas, que no tienen que proporcionar llamadas de función a un objeto referenciado. –
Marcel: tienes razón, era un tipo, lo he arreglado. – tlrobinson
ThiefMaster: la mayoría de mis preguntas nunca se responden adecuadamente ... – tlrobinson