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__ // Objects.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;
}arr.sort(_ => -1) будет реверсить массив, а в FireFox он не изменится. Зато в FireFox реверсится будет при возврате положительного числа: arr.sort(_ => 1), что в Chrome, вероятно, никак не изменит массив.a и b значение. Для одних и тех же a и b всегда одно и то же. Иначе результат сортировки непредсказуем. Нее, тут они вообще игнорируются же. Не участвуют, не влияют на результат, который постоянен:aздесь 1, аbздесь 2, соответственно порядок должен быть 1, 2, а не 2, 1
-0.5 arr.sort((a, b) => {
console.log(a, b, arr.join(','));
return -0.5;
})p.s. а нет, массив выводится в начальном виде каждый раз.