Вызов функции в службе AngularJS из той же службы?

У меня есть служба AngularJS, определенная следующим образом

angular.module('myService').service('myService', function() {
  this.publicFunction(param) {
    ...
  };

  this.anotherPublicFunction(param) {
    // how to call publicFunction(param)?
    ...
  };
});    

и я хотел бы вызвать первую функцию как извне службы (которая прекрасно работаетmyService.publicFunction(xxx)) и из другой функции в том же сервисе, т.е.anotherPublicFunction. Ни один изthis.publicFunction(param) или жеmyService.publicFunction(param) не будет работать из-за второй функции, и я могу это понять.

РЕДАКТИРОВАТЬ:
На самом деле вся проблема была вызвана чем-то, что вы не можете воспроизвести с помощью одного моего примера. Я передал вторую функцию в качестве параметра обратного вызова другой функции в отдельном контроллере, и когда она вызывается, ссылка наthis не работает

Например.

anotherService.someCall('a', 123, myService.anotherPublicFunction);

терпит неудачу внутриanotherPublicFunction потому чтоthis не может быть решена.

Я написал Plunker, чтобы показать проблему: http://plnkr.co/edit/rrRs9xnZTNInDVdapiqF?p=info

(Я все еще оставлю вопрос здесь на случай, если это поможет кому-то еще.)

Я знаю, что могу обойти проблему, используя ссылку на сервис или первую функцию, подобную этой

var ms = this;
this.anotherPublicFunction(param) {
  ms.publicFunction(param);
  ...
};

или это

var pf = this.publicFunction;
this.anotherPublicFunction(param) {
  pf(param);
  ...
};

но оба кажутся грязными взломами.

Есть ли хороший способ вызвать первую функцию из второй в этом случае? Или я делаю что-то совершенно не так, во-первых, чтобы иметь такой сервис?

Я нашел эти вопросы с хорошими ответами:

Angularjs разделяет функции внутри сервисаAngularJs вызывают внутреннюю сервисную функцию из себя

но они отличаются от моей проблемы, поскольку одна из них имеет отдельную внутреннюю функцию, которая должна была быть вызвана, а другая использует фабрику вместо службы.

РЕДАКТИРОВАТЬ:

После публикации этого я сразу понял, что я мог также сделать это:

var actualWork = function(param) {
  ...
}

this.publicFunction(param) {
  actualWork(param);
};

this.anotherPublicFunction(param) {
  actualWork(param);
  ...
};

что пока не так плохо, как другие варианты ... Есть ли лучшие подходы?

Ответы на вопрос(11)

Ваш ответ на вопрос