Как переопределить функцию JS в отношении замыкания? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь переопределить Class.method, он использует функцию из замыкания.Измененная версия, которую я предоставил в настоящее время, не работает, так как использует функцию e (), которая не доступна напрямую из глобального пространства имен.Есть ли способ заставить работать измененную версию без редактирования чего-либо еще?

function() {
    function e(a, b, c) {
    // e body
    }
    Class.method = function(a, b, c, d) {
        // method body
        return new e(a, b, c)
    }
}

//Modified version (Not working)
Class.method = function(a, b, c, d) {
            // method body
        alert("I'm modified!");
        return new e(a, b, c)
    }

1 Ответ

1 голос
/ 20 июня 2019

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

...