Каждый раз, когда вы звоните myMethod
, previous
объявляется заново (var previous
).
У вас есть четыре возможности:
(A) Создайте замыкание (лучшее решение imo, но зависит от ваших потребностей):
myMethod : (function() {
var previous = null;
return function() {
if ( current > previous ) {
// do this!
}
previous = current;
}
}());
(B) Установить previous
как свойство объекта функции:
myMethod : function() {
if ( current > foo.myMethod.previous ) {
// do this!
}
foo.myMethod.previous = current;
}
foo.myMethod.previous = null;
Но это очень сильно связывает функцию с именованием объекта.
(C) Если это вписывается в вашу модель, сделайте previous
свойством объекта myMethod
- это свойство:
previous: null,
myMethod : function() {
if ( current > this.previous ) {
// do this!
}
this.previous = current;
}
(D) Аналогично (A), установите previous
где-то снаружи в более высокой области видимости:
var previous = null;
// ...
myMethod : function() {
if ( current > previous ) {
// do this!
}
previous = current;
}
Это не хороший имо, поскольку он загрязняет высшую область.
Трудно сказать, не видя больше вашего кода, но, вероятно, также лучше, если вы передадите current
функции.