Как получить доступ к члену класса после инициализации? - PullRequest
0 голосов
/ 27 марта 2020

Я создаю этот класс, используя чистый javascript:

var SelectFeature = /*@__PURE__*/(function (Select) {
    function SelectFeature() {
        Select.call(this, {
            condition: ol.events.condition.click
        });
    }

    this.on('select', function (e) {
        //some logic
    });

    if (Select) SelectFeature.__proto__ = Select;
    SelectFeature.prototype = Object.create(Select && Select.prototype);
    SelectFeature.prototype.constructor = Select;

    return SelectFeature;
}(ol.interaction.Select));

, как вы видите, я передаю ol.interaction.Select в качестве параметра классу и использую метод Select.call () в SelectFeature как конструктор.

Вот описание класса ol.interaction.Select.

В классе ol.interaction.Select есть член, который называется on(). Я пытаюсь получить доступ к этому методу, как это показано в примере выше:

this.on('select', function (e) {
        //some logic
})

, но я получаю эту ошибку:

Uncaught TypeError: this.on is not a function

Мой вопрос: как я могу получить доступ к члену ol.interaction.Выберите класс?

1 Ответ

1 голос
/ 27 марта 2020

this не имеет определения вне функции SelectFeature. Поэтому вам нужно вызвать this.on внутри функции SelectFeature. Для этого вам нужно установить функцию on внутри функцию SelectFeature:

var SelectFeature = /*@__PURE__*/(function (Select) {
    function SelectFeature() {
        Select.call(this, {
            condition: ol.events.condition.click
        });
        this.on = Select.prototype.on; // This gets Select's on method and gives it to `this`
        this.on('select', function (e) {
           //some logic
         });
    }

    if (Select) SelectFeature.__proto__ = Select;
    SelectFeature.prototype = Object.create(Select && Select.prototype);
    SelectFeature.prototype.constructor = Select;

    return SelectFeature;
}(ol.interaction.Select));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...