gpt4 book ai didi

javascript - Monkeypatch Javascript 构造函数

转载 作者:行者123 更新时间:2023-11-28 07:52:17 28 4
gpt4 key购买 nike

我已经阅读了我能找到的所有其他相关答案,但没有一个有效。本质上,我想制作这个来源: https://github.com/gildas-lormeau/zip.js/blob/master/WebContent/zip-ext.js

在第 93 行向 XMLHttpRequest 添加一些自定义 header 。由于 HTTPRangeReader 包含在匿名函数中,因此我无法直接对其进行 Monkeypatch,这似乎是唯一的选项是对 XMLHttpRequest 构造函数进行 Monkeypatch。我只需要调用默认构造函数,然后在返回新对象之前调用 setRequestHeader() 一次或多次。

最佳答案

使用别名克隆原始文件,然后在方法覆盖中引用它:

    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;
}

引用文献

关于javascript - Monkeypatch Javascript 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637722/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com