TypeError: 'get ready' called on an object that does not implement interface ServiceWorkerContainer. on expanding navigator.serviceWorker object

TypeError: 'get ready' called on an object that does not implement interface ServiceWorkerContainer. on expanding navigator.serviceWorker object

firefox version: 58.0

在 firefox 控制台中输入 navigator.serviceWorker,然后单击 ServiceWorkerContainer 将其展开。

并得到一个错误:TypeError: 'get ready' called on an object that does not implement interface ServiceWorkerContainer.

这是什么意思?它是 Firefox 的错误吗?

可能不是错误,但很有趣。

当 devtools 尝试扩展它时,除了访问 navigator.serviceWorker 自己的属性外,它还尝试访问其原型的属性(在 devtools 中显示为特定于浏览器的 __proto__ 属性姓名)。显然,这样做时,它给出的 this 不是 navigator.serviceWorker(我猜它是原型对象本身,例如 Object.getPrototypeOf(navigator.serviceWorker)),ready 的实现原型上的 getter 期望在继承对象(松散地,"instance")上调用,而不是原型本身。

如果您在 Firefox 控制台中这样做,您会得到同样的错误:

Object.getPrototypeOf(navigator.serviceWorker).ready

没什么好担心的。 :-)