Существует ли способ вызвать "общедоступные" функции 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 ()]?
Можно сохранить переменную в области конструктора, чтобы содержать ссылку на 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();
}
}