Как динамически включать Javascript с несколькими экземплярами объекта - PullRequest
1 голос
/ 20 апреля 2019

Я написал библиотеку на javascript и для оптимизации загрузки хочу разделить код на файлы, которые загружаются динамически при необходимости.

Работает нормально, если я создаю один экземпляр библиотеки, но если я создаю несколько экземпляров, ничего не работает. Вот небольшой пример текущей структуры, которую я использую.

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

Тогда я вызываю метод (дополнение). Этот метод, который не существует в моей библиотеке «калькулятор», загружается динамически (файл зависимостей). Я использую include.js для динамической загрузки скрипта. Когда я проверяю вкладку сети моего навигатора, файл загружается правильно, но функция не выполняется (в сценарии с несколькими экземплярами)

Если я использую только один экземпляр, это нормально, и консоль показывает 5. Но если я использую другой экземпляр, выходных данных нет, метод Tools.add () не запускается.

Большое спасибо за вашу помощь, я безуспешно перепробовал множество вещей. Мне действительно нужно разбить библиотеку на несколько частей и использовать несколько ее экземпляров. Может быть, у меня нет правильного подхода?

Код на главной html-странице

<script src="component.js"></script>
<script>
            var instance1 = new Calculator();
            instance1.Addition(2, 3);

            var instance2 = new Calculator();
            instance2.Addition(4, 6);
</script>

component.js

var Calculator = function () {
    this.Addition = function (a, b) {
        include(['dependency.js'], function () {
            console.log(Tools.add(a, b));
        });
    };

    this.Multiply = function (a, b) {
        console.log(a * b);
    };

};

dependency.js, который загружается динамически

var Tools = (function () {
    return {
        add: function (a, b) {
            return a + b;
        }
    }
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...