Как определить сеттер/геттер на прототипе

РЕДАКТИРОВАТЬ, октябрь 2016 г. : обратите внимание, что этот вопрос был задан в 2012 году. Каждый месяц или около того кто-то добавляет новый ответ или комментарий который опровергает ответ, но на самом деле не имеет смысла делать это, поскольку вопрос, вероятно, устарел (помните, что это было для Gnome Javascriptдля написания расширений gnome-shell, а не для браузера, который вполне конкретно).

Следуя моему предыдущему вопросуо том, как создавать подклассы в Javascript, я создаю подкласс суперкласса следующим образом:

function inherits(Child,Parent) {
    var Tmp = function {};
    Tmp.prototype = Parent.prototype;
    Child.prototype = new Tmp();
    Child.prototype.constructor = Child;
}
/* Define subclass */
function Subclass() {
    Superclass.apply(this,arguments);
    /* other initialisation */
}
/* Set up inheritance */
inherits(Subclass,Superclass);
/* Add other methods */
Subclass.prototype.method1 = function ... // and so on.

Мой вопрос: как мне определить сеттер/ getter на прототипе с таким синтаксисом?

Раньше я делал:

Subclass.prototype = {
    __proto__: Superclass.prototype,
    /* other methods here ... */

    get myProperty() {
        // code.
    }
}

Но очевидно, что следующее не будет работать:

Subclass.prototype.get myProperty() { /* code */ }

Я использую GJS (GNOME Javascript), и движок должен быть более или менее таким же, как у Mozilla Обезьяна-паук одна. Мой код не предназначен для браузера, поэтому, если он поддерживается GJS (я думаю, это означает Spidermonkey?), я не возражаю, если он несовместим.

73
задан Community 23 May 2017 в 12:02
поделиться