Показать сообщение отдельно
  #1 (permalink)  
Старый 15.01.2009, 18:44
forker
 
Сообщений: n/a

function lock (permitted execution)
Всем привет!

мне нужно уметь блокировать функции. решение придумал\"придумал" такое:

Код:
/* Permitted execution of a function. */
Function.prototype.pexec =  function(arg1, arg2, arg3) {
if(!this.pexecflag) return;
this(arg1, arg2, arg3);
}

/* Locks pexec execution of a function */
Function.prototype.lock =  function() {
this.pexecflag=false;
}

/* Unlocks pexec execution of a function */
Function.prototype.unlock =  function() {
this.pexecflag=true;
}
при этом если я хочу пользоваться "осторожным" вызовом функции, я ее вызываю через FunctionName.pexec(parms), и блокирую где надо функцией FunctionName.lock().

В общем, мне нравится это решение, за исключением того, что я не могу
понять как передавать самой функции FunctionName все параметры до одного, которые были переданы через .pexec(). Передавать arguments массивом - не по фэн-шую, поскольку основная реализация функции не должна ничего знать о таком способе вызова.

Так что, форумчане, прошу вас подсказать каким способом этого можно достичь или предложить другие решения изначальной задачи.
Ответить с цитированием