Рычаги функции JavaScript

После перечитывания вашего вопроса несколько раз, я думаю, вы имеете в виду:

document.getElementById("formInputBodySize").addEventListener("input", fBodySize);
let arrBodySize = [];
function fBodySize() {
  let size = this.value;
  size = isNaN(size) || size.trim()==""? 0: +size; // make it number
  if (size) {
    arrBodySize.push(size);
    document.getElementById('titleWeight').innerText = size+10;
  }
  else document.getElementById('titleWeight').innerText = "";
}
Body size:<input type="text" id="formInputBodySize" /> Title weight: <span id="titleWeight"></span>

12
задан Seyen 6 May 2009 в 18:56
поделиться

3 ответа

Посмотрите на плагин jQuery's AOP . В общем, Google "Javascript аспектно-ориентированного программирования".

10
ответ дан 2 December 2019 в 05:28
поделиться

Может быть, не красиво, но, похоже, работает ...

<script>

function A(x) { alert(x); return x; }
function B() { alert(123); }

function addHook(functionB, functionA, parent)
{
    if (typeof parent == 'undefined')
        parent = window;

    for (var i in parent)
    {
        if (parent[i] === functionA)
        {
            parent[i] = function()
            {
                functionB();
                return functionA.apply(this, arguments)
            }

            break;
        }
    }
}

addHook(B, A);

A(2);

</script>
12
ответ дан 2 December 2019 в 05:28
поделиться

Этот ответ не является окончательным, а скорее демонстрирует другую технику, чем предложенная до сих пор. Это использует тот факт, что функция в Javascript является объектом первого класса, и, как таковой, а) вы можете передать его как значение другой функции и б) вы можете добавить свойства к нему. Объедините эти черты со встроенными в функцию методами «вызова» (или «применения»), и вы сами начнете искать решение.

var function_itself = function() {
    alert('in function itself');
}
function_itself.PRE_PROCESS = function() {
    alert('in pre_process');
}
function_itself.POST_PROCESS = function() {
    alert('in post_process');
}

var function_processor = function(func) {
    if (func.PRE_PROCESS) {
        func.PRE_PROCESS.call();
    }
    func.call();
    if (func.POST_PROCESS) {
        func.POST_PROCESS.call();
    }        
}
2
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: