javascript - 为什么bind会修复“"failed to execute ' fetch' on 'Window'非法调用”错误?

标签 javascript fetch-api function-binding

我只是好奇

这个...

let s = { f: window.fetch };
s.f("https://www.google.com");

失败

Failed to execute 'fetch' on 'Window': Illegal invocation

虽然这有效......

let s = { f: window.fetch.bind(window) }; 
s.f("https://www.google.com");

后者如何解决这个问题?为什么它会这样工作,背后有什么理论吗?

最佳答案

出于某些内部目的,fetch 函数必须使 thiswindow 相同。当您创建自己的对象并仅将 fetch 函数指定为其属性之一时,fetch 函数无法像 this 那样访问 window 对象。

fetch specification描述窗口可能的用途。您也许可以通过设置 no-window 使原始代码正常工作,但我尚未对此进行测试。

关于javascript - 为什么bind会修复“"failed to execute ' fetch' on 'Window'非法调用”错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69876859/

相关文章:

javascript - 您可以取消绑定(bind)到文档的 jQuery 函数吗?

javascript - 如何用 node.js 做 AOP?

javascript - 如何在javascript中获取mysql数据以进行动态表单添加

javascript - 获取 : Reject promise with JSON error object

javascript - 如何在收到获取 POST 请求的响应后将用户重定向到页面?

javascript - 在加载的ajax内容上绑定(bind)点击事件

javascript - 使用具有动态函数绑定(bind)的测试 spy 的好方法

javascript - JQuery 选择器 : How to get a img id that have an one and only one attribute

javascript - 如何在 Javascript 中预加载声音?

javascript - 你如何让axios GET请求等待?