Как я могу создать контейнер данных только с помощью docker-compose.yml?

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

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

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

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

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

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

export default obj;

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

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

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

30
задан VonC 2 October 2015 в 14:32
поделиться