jquery-plugins icon indicating copy to clipboard operation
jquery-plugins copied to clipboard

fix methods properties

Open apsavin opened this issue 13 years ago • 3 comments

Sometimes it is very useful to set a flag to function - for example, for auto-wrap it in $.memoize in constructor.

apsavin avatar Jan 21 '13 17:01 apsavin

Anybody?..

apsavin avatar Feb 01 '13 18:02 apsavin

А можешь привести конкретный пример использования этого вместе с $.memoize?

dfilatov avatar Feb 02 '13 06:02 dfilatov

Пример ниже pseudo code:

class A {
    doSmth: $.memoize(function (a) { return this.b + a; });
}

Может вызвать ошибку, так как функция находится в прототипе и запоминаться ответы будут для всех инстансов. На всякий случай - jsfiddle. Можно избежать проблемы, обернув в $.memoize в конструкторе. Чтобы с этим не замарачиваться, удобно ставить функции флаг, например, так:

$._memoize = function (fn) {fn.memoizable = true; return fn;};
$._memoize(function (a) { return this.b + a;});

В конструкторе проходить по методам, смотреть у них наличие флага и, например, оборачивать в $.memoize. В наследниках класса, соответственно, дублировать не придется, можно будет любые функции помечать флагами.

Это только один из примеров. Вообще - можно придумать кучу разных примеров, для чего в свойства метода может понадобиться что-то сохранить.

apsavin avatar Feb 02 '13 12:02 apsavin