2014-10-29 6 views
1

Я прочитал все другие связанные ответы, которые мне удалось найти, но никто не работал. По сути, я хочу, чтобы этот источник: https://github.com/gildas-lormeau/zip.js/blob/master/WebContent/zip-ext.jsMonkeypatch Javascript constructor

добавить некоторые пользовательские заголовки the XMLHttpRequest на линии 93. Поскольку HTTPRangeReader обернут в анонимную функцию, я не могу monkeypatch его непосредственно, и, кажется, единственным вариантом является monkeypatch конструктор XMLHttpRequest. Мне просто нужно вызвать конструктор по умолчанию, а затем вызвать setRequestHeader() один или несколько раз перед возвратом нового объекта.

ответ

0

Используйте псевдоним, чтобы клонировать оригинал затем ссылаться на него в методе переопределения:

function handler() 
 
     { 
 
     console.log(JSON.stringify(arguments)); 
 
     } 
 

 
    /* Avoid stack overflow */ 
 
    if (XMLHttpRequest.prototype.mySetRequestHeader === undefined) 
 
     { 
 
     XMLHttpRequest.prototype.mySetRequestHeader = XMLHttpRequest.prototype.setRequestHeader; 
 
     } 
 

 
    /* Override prototype method */ 
 
    XMLHttpRequest.prototype.setRequestHeader = function baz(foo, bar) 
 
     { 
 
     XMLHttpRequest.prototype.mySetRequestHeader.call(this, 'foo', 'bar'); 
 
     XMLHttpRequest.prototype.mySetRequestHeader.call(this, 'bar', 'baz'); 
 
     
 
     } 
 

 
    /* Test the override */ 
 
    with (new XMLHttpRequest) 
 
     { 
 
     open('GET', location.href); 
 
     setRequestHeader("referer","http://www.example.com"); 
 
     send(""); 
 
     onreadystatechange = handler; 
 
     }

Список литературы