можно ли создать глобальный массив, к которому можно обращаться из модулей и изменять егоМожно, но не нужно. Грязно и дешево: обращаться к глобальному объекту. Например globalThis:
// модуль А
globalThis.data = [];
// модуль B
globalThis.data.push({ prop: value});
Чем плохо: а что если сначала выполнится модуль B, и только потом модуль A? Ну и вообще это оч. плохая практика. Мало ли, кто ещё захочет вжух! и стереть globalThis.data
? Calendar.onChange = (date) => Blocks.display(date);
class A {
say() { console.log('Aaa!'); }
}
const obj = {};
obj.say = (new A()).say; // костылинг
obj.say(); // Aaa!
this
.import Filter from './common/filter';
import Calendar from './common/calendar';
class Page extends Blocks {
someMethod() {
let y = Filter.onlyNumbers(x);
Calendar.display();
}
}
множественное наследование
const s = new Sounds();
s.__proto__ // класс Sounds
s.__proto__.__proto__ // Object
s.say()
– он ищется в самом экземпляре (нет), выше на 1 уровень (в классе Sounds) – нашёлся!s.toString()
– он ищется в самом экземпляре (нет), выше на 1 уровень (в классе Sounds) – (нет), ещё на 1 уровень выше в Object – есть! const sameCase = (a, b) => {
const isChar = arg => typeof arg === 'string' && arg.length === 1;
if (!isChar(a) || !isChar(b)) {
return -1;
}
const cases = str => [ str.toUpperCase(), str.toLowerCase() ];
const [au, al] = cases(a);
const [bu, bl] = cases(b);
if (au === al || bu === bl) {
return -1;
}
const isAUp = au === a;
const isBUp = bu === b;
return isAUp === isBUp ? 1 : 0;
}