Как вызвать другую функцию внутри одного объекта?

let role = {
    test: (variable) => {
        // How do I call toLog(variable) from here?
    },
    toLog: (variable) => {
        console.log(variable);
    }
};

Я хотел бы вызвать функцию toLog() в функции test(), но я не знаю, как это сделать.

Ответ 1

Стандартные функции JS используют динамическое связывание, this зависит от того, кто вызывает этот метод во время выполнения, поэтому, если мы его назовем с помощью role.test(), он привяжет this к role.

Функции стрелок связывают this с текущим контекстом. Например, если код был написан в консоли браузера, this привязан к объекту window. Это называется статической лексической привязкой, что означает привязку this к закрытию, в котором она была определена.

Если вы не будете использовать функции стрелок, this будет указывать на сам объект при вызове role:

const role = {
    test(variable){
        this.toLog(variable);
    },
    toLog(variable) {
        console.log(variable);
    }
};

role.test(5);