【问题标题】:Monkeypatch Javascript constructorMonkeypatch Javascript 构造函数
【发布时间】:2014-12-25 14:13:10
【问题描述】:
【问题讨论】:
标签:
javascript
xmlhttprequest
monkeypatching
zip.js
【解决方案1】:
使用别名克隆原始然后在方法覆盖中引用它:
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;
}
参考文献