Ошибка исключения 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>

Может кто подробно объяснить.

Спасибо.


person UnKNOWn    schedule 01.06.2021    source источник
comment
на мой взгляд, вы должны включить минимальный воспроизводимый пример   -  person Drdilyor    schedule 01.06.2021
comment
@Drdiyor спасибо за ваш комментарий. Добавлен скриншот.   -  person UnKNOWn    schedule 01.06.2021
comment
Пожалуйста, скопируйте и вставьте свой код вместо того, чтобы вставлять скриншот — он отображается очень маленьким, и я не могу прочитать крошечный белый текст на черном без увеличения!   -  person ptomato    schedule 02.06.2021
comment
Сделали копирование и вставку.   -  person UnKNOWn    schedule 02.06.2021


Ответы (1)


JavaScript имеет прототипное наследование — это означает, что DateMenuButton.prototype — это объект, который содержит методы DateMenuButton, но не является самим DateMenuButton. Таким образом, когда вы вызываете DateMenuButton.prototype.hide(), вы вызываете метод DateMenuButton hide() для объекта, который не является DateMenuButton. Это даст вам ошибку. Сообщение об ошибке не совсем ясно, но не может ___ на прототипе, только на экземплярах есть подсказка о том, что происходит.

Чтобы вызвать этот метод, вам понадобится реальный объект DateMenuButton.

Вот некоторые дополнительные материалы для чтения по прототипному наследованию: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

person ptomato    schedule 02.06.2021