Как я могу проверить, что функция вызывает другую функцию внутри? [Дубликат]

Вы можете использовать общие домены Apache:

Для подстроки после последнего вхождения используйте этот метод .

И для подстроки после первого эквивалентного метода вхождения является здесь .

10
задан kurtmarcink 31 January 2016 в 08:22
поделиться

1 ответ

Вы правы, думая, что это невозможно с тем, как модуль в настоящее время структурирован.

Когда код выполняется, ссылка baz внутри function bar разрешена относительно локального реализация. Вы не можете изменить это, поскольку вне кода модуля нет доступа к внутренним элементам.

У вас do есть доступ к экспортированным свойствам, но вы не можете их мутировать и так вы не можете повлиять на модуль.

Один из способов изменить этот код:

let obj = {};
obj.bar = function () {
 this.baz();
}

obj.baz = function() {
 ...
}

export default obj;

Теперь, если вы переопределили baz в импортированном объекте, вы будет влиять на внутренности bar.

Сказав это, это выглядит довольно неуклюжим. Существуют и другие методы управления поведением, такие как инъекция зависимостей.

Кроме того, вы должны подумать, действительно ли вы заботитесь о том, вызван ли baz. В стандартном «черном ящике» вам все равно , как что-то сделано, вам все равно, какие побочные эффекты он генерирует. Для этого проверьте, были ли побочные эффекты, которые вы ожидали, и что ничего больше не было сделано.

12
ответ дан Amit 22 August 2018 в 16:42
поделиться
  • 1
    Спасибо за быстрый ответ. Я думал так же, и у меня было ощущение, что мне придется принять более черный подход. – kurtmarcink 31 January 2016 в 08:52
Другие вопросы по тегам:

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