Доступ к “Общедоступным” методам из “Частных” методов в классе JavaScript

Существует ли способ вызвать "общедоступные" функции JavaScript от "частных" в классе?

Проверьте класс ниже:

function Class()
{
    this.publicMethod = function()
    {
        alert("hello");
    }

    privateMethod = function()
    {
        publicMethod();
    }

    this.test = function()
    {
        privateMethod();
    }
}

Вот код, который я выполняю:

var class = new Class();
class.test();

Firebug дает эту ошибку:

publicMethod не определяется: [Повреждение на этой ошибке] publicMethod ();

Там некоторый другой путь состоит в том, чтобы назвать publicMethod () в privateMethod (), не получая доступ к глобальной переменной класса [т.е. class.publicMethod ()]?

12
задан mon4goos 24 April 2010 в 07:13
поделиться

1 ответ

Можно сохранить переменную в области конструктора, чтобы содержать ссылку на this.

Обратите внимание: В вашем примере вы пропустили var перед privateMethod = function(), сделав этот privateMethod глобальным. Я обновил решение здесь:

function Class()
{
  // store this for later.
  var self = this;
  this.publicMethod = function()
  {
    alert("hello");
  }

  var privateMethod = function()
  {
    // call the method on the version we saved in the constructor
    self.publicMethod();
  }

  this.test = function()
  {
    privateMethod();
  }
}
8
ответ дан 2 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: