GJS gnome-shell 异常错误,如何克服这个错误

问题描述

我想了解此错误消息是什么。

imports.ui.dateMenu.DateMenuButton.prototype.hide()

当我在lookingGlass 中运行时,出现以下错误

<exception Error: Can't convert to pointer on .Gjs_ui_dateMenu_DateMenuButton.prototype; only on instances>

谁能详细解释一下。

谢谢。

解决方法

JavaScript 具有原型继承——这意味着 DateMenuButton.prototype 是一个包含 DateMenuButton 方法的对象,但它本身不是 DateMenuButton。因此,当您调用 DateMenuButton.prototype.hide() 时,您是在对不是 DateMenuButton 的对象调用 DateMenuButton 的 hide() 方法。这会给你一个错误。错误消息不是特别清楚,但“不能 ___ 在原型上,只能在实例上”暗示发生了什么。

要调用此方法,您需要一个实际的 DateMenuButton 对象。

这里有一些关于原型继承的进一步阅读材料:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain