Используя ES6 / ES2015 и веб-пакет, я пытаюсь обернуть голову вокруг маленького монстра с ключевым словом this .
У меня есть класс Edit
, содержащий статический методchange(event)
и в рамках этого метода я пытаюсь сделать рекурсивный вызов самого метода (в зависимости от заданной переменной).
В большинстве случаев я мог бы просто вызвать this.change(event)
, но здесь ключевое слово this уже занято объектом jquery, который вызывал функцию вместо содержащего класса.
Самым простым решением было бы просто позвонить Edit.change(event)
, но должно быть более чистое решение.Каждый язык программирования, с которым я сталкивался до сих пор, имел некоторую ссылку на встроенный класс.
Я обещаю, что проверил документы и другие потоки в stackoverflow, но, похоже, никто из найденных мной не решает эту конкретную проблему.
// main.js
'use strict';
const $ = require('jquery');
const Edit = require('./Edit');
$(document).ready(() => {
let thingsToAddToData = {
whatToDo: // defined here depending on context
someVariable: //defined here depending on context
};
$('table :input').change(thingsToAddToData, Edit.change);
}
и здесь определяется класс редактирования
// Edit.js
class Edit {
static change(event) {
if(event.data.whatToDo === 'do_nothing'){
return false;
}
if(event.data.whatToDo === 'do_this_important_thing'){
// here some important stuff is done
return true;
}
if(event.data.someVariable === 'special_case'){
event.data.whatToDo = 'do_this_important_thing'
// THIS IS THE LINE THAT GIVES ME HEADACHES
return this.change(event);
}
// here some default stuff is done
}
}
module.exports = Edit;