我只是好奇
这个...
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
函数必须使 this
与 window
相同。当您创建自己的对象并仅将 fetch 函数指定为其属性之一时,fetch 函数无法像 this
那样访问 window
对象。
fetch
specification描述窗口
可能的用途。您也许可以通过设置 no-window
使原始代码正常工作,但我尚未对此进行测试。
关于javascript - 为什么bind会修复“"failed to execute ' fetch' on 'Window'非法调用”错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69876859/