Как заставить функцию вызывать приватную переменную между вызовами - PullRequest
5 голосов
/ 18 апреля 2010

Вот простой текст из учебника, который я не могу найти.

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

Может кто-нибудь пробежит мою память, пожалуйста.

Ответы [ 4 ]

5 голосов
/ 18 апреля 2010

Создать его с помощью замыкания:

function f() {
  var x = 0;
  return function() {return x++;};
}

Затем используйте его следующим образом:

> g = f()
function () {return x++}
> g()
0
> g()
1
> g()
2
1 голос
/ 18 апреля 2010
 var accumulator = (function() {
    var accum = 0;

    return function(increment) {
       return accum += increment;
    }
 })();

 alert(accumulator(10));
 alert(accumulatot(15));

Отображает 10, затем 25.

0 голосов
/ 18 апреля 2010

Я не уверен, правильно ли я понял, но, может быть, что-то подобное поможет:

function Foo() {
  var x = "some private data";
  return {
   getPrivateData : function(){
      return x;
   }
  };
};

var xx = new Foo();
xx.getPrivateData();
0 голосов
/ 18 апреля 2010

Вот действительно частная реализация

    (function() {

        var privateVar = 0;

        window.getPreviousValue = function(arg) {
            var previousVal = privateVar;
            privateVar = arg;
            return previousVal;
        }

    })()

    alert(getPreviousValue(1));
    alert(getPreviousValue(2));

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...