У меня есть функция 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);
  ...
};
но оба выглядят как грязные хаки.
Есть ли хороший способ вызвать первую функцию из второго в этом случае? Или я делаю что-то совершенно неправильное, в первую очередь, чтобы иметь такой сервис?
Я нашел эти вопросы с хорошими ответами:
но они отличаются от моей проблемы, поскольку одна из них имеет отдельную внутреннюю функцию, которая должна была вызываться, а другая использовала factory вместо службы.
EDIT:
После публикации этого я сразу понял, что могу это сделать:
var actualWork = function(param) {
  ...
}
this.publicFunction(param) {
  actualWork(param);
};
this.anotherPublicFunction(param) {
  actualWork(param);
  ...
};
что пока не так плохо, как другие варианты до сих пор... Есть ли лучшие подходы?