множественное наследование
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;
}
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. а нет, массив выводится в начальном виде каждый раз. proxy_pass
.map $scheme $upstream_main {
default app;
}
upstream bundle {
server $upstream_main;
server fallback backup;
}
this
.Может, «общие блоки» сделайте модулями. Импортируйте их, чтобы обращаться к их методам