Вы смешиваете модули стиля import
/ export
и тип, который прикреплен к window
.Я бы порекомендовал выбрать один или другой.
Например, чтобы прикрепить все к window
:
namespace.js
var somenamespace = window.somenamespace || {}; // not strictly necessary
class1.js
var somenamespace = window.somenamespace || {};
somenamespace.class1= (function() {
var _public = {};
_public.someBoolean= false;
return _public;
})();
class2.js
var somenamespace = window.somenamespace || {};
somenamespace.class2= (function() {
var _public = {};
_public.init= function() {
};
return _public;
})();
с использованием модуля
// no import, just read it off of window
var a = function() {
window.somenamespace.class1.someBoolean = true;
window.ansomenamespace.class2.init();
};
В качестве альтернативы я бы порекомендовал import
/ export
, хотя вам нужно переносить код с помощью Babel или Webpack или чего-то подобного, поскольку не все браузеры поддерживают модули ES:
namespace.js
export {class1} from './class1'
export {class2} from './class2'
class1.js
export const class1 = (function() {
var _public = {};
_public.someBoolean= false;
return _public;
})();
class2.js
export const class2 = (function() {
var _public = {};
_public.init= function() {
};
return _public;
})();
с использованием модуля
import * as somenamespace from './namespace'
var a = function() {
somenamespace.class1.someBoolean = true;
ansomenamespace.class2.init();
};