JavaScript Object notation - используя методы внутри одного и того же объекта?

Я экспериментирую с node.js и у меня есть набор методов, которые экспортируются с использованием module.exports однако некоторые методы предназначены для повторного использования с одним и тем же объектом, но я не уверен, как это сделать. В PHP я бы просто ссылался this, я знаю this можно ссылаться в объектах-прототипах, но можно ли сделать то же самое в нотации объектов JavaScript?

Пример кода:

module.export = {

    foo: (a, b) => {
        return a + b;
    },

    bar: () => {
       return foo(2, 5); // This is where i run into problems, using 'this' has no effect.
    }

}

1 ответ

Решение

Вы можете использовать this Ключевое слово в JavaScript. Единственное другое изменение, которое вам нужно будет сделать, это использовать реальные функции вместо функций стрелок, так как функции стрелок не фиксируют this объем.

Вот цитата со страницы MDN о функциях стрелок.

Выражение функции со стрелкой имеет более короткий синтаксис, чем выражение функции, и не имеет собственного this, arguments, super или new.target.

Потому что у него нет своего this Вы не можете использовать функции стрелок в этом случае.

Ниже приведен пример того, как вы можете реорганизовать свой код, чтобы работать так, как вы ожидаете.

module.export = {

    foo: function (a, b) {
        return a + b;
    },

    bar: function () {
       return this.foo(2, 5);
    }

}
Другие вопросы по тегам