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);
}
}