Вот из-за таких вот "переводов" читать предпочитаю в оригинале, все последние попытки прочитать книгу в русском переводе спотыкались о "замковый механизм, чтобы обойти пределы модели конкурентности" и другие дивные термины и выражения, существующие только в голове "переводчика" :)
Причем хочу заметить, что старые переводы, когда над ними работали профессионалы в IT, а не "эксперты в лингвистике", по моему ощущению были гораздо адекватнее.
Функции — точно такой же объект, как любой другой. Их даже создавать можно через конструктор new Function.
Если метод лежит в прототипе, то все потомки по prototype chain получают возможность использовать одну копию метода.
А если мы их пишем в сам объект в конструкторе, то память под методы выделяется при создании каждого экземпляра. Чем больше экземпляров, тем больше расход памяти.
В варианте 2 память выделяется при вызове метода, в котором лежит setInterval, и освобождается после завершения работы, а в других вариантах этого не происходит.
Если у вас всего один экземпляр класса, то вы не заметите разницу. Только зачем вам тогда вообще классы?
А вот если экземпляров много, то случае с прототипным наследованием методы хранятся в прототипе, а в случае с хранением их в экземплярах — они дублируются для каждого экземпляра.
(ворчание) А потом они удивляются, почему вкладка с todo-list app съедает пару сотен мегабайт оперативки...
Это не наследование, а запись методов напрямую в экземпляр. От того, что вы через родительский конструктор запишите эти методы в экземпляр дочернего класса никакое наследование не появится.
В JS наследование реализуется через прототипы, а не методы в class properties
Вот такой код
class Test {
myMethod() {
...
}
set() {
setInterval(() => this.myMethod(), 300);
}
}
Не работал с монгой, так что не дам комментариев по её поводу, но вот утверждение о том, что Оракл или постгрес блокируют поток — однозначно ложный. Если бы это было так, то применение этих СУБД с нодой было бы невозможным :)
Если внешняя система не поддерживает неблокирующий I/O, нода использует пул потоков, о котором в статье как раз говорится.
Для I/O используется пул потоков, размер которого ограничен по-умолчанию 4-мя потоками, соответственно одновременно может выполняться только 4-ре I/O операции, остальные встают в очередь, так что это потенциальное узкое место. При необходимости размер пула можно увеличить. И не для всех операций этот пул используется, если внешний API поддерживает неблокирующий ввод-вывод, то пул не нужен.
а вы статью точно внимательно читали? JS однопоточный, но неблокирующий ввод-вывод реализован путём запуска отдельных потоков (threads) через средства ОС, соответственно вся работа с сетью и файлами и запускается в отдельных потоках.
Кто бы сомневался. Деньги не пахнут
Всё решается настроенной связкой eslint + prettier и набором правил для них под кодстайл проекта
Вот из-за таких вот "переводов" читать предпочитаю в оригинале, все последние попытки прочитать книгу в русском переводе спотыкались о "замковый механизм, чтобы обойти пределы модели конкурентности" и другие дивные термины и выражения, существующие только в голове "переводчика" :)
Причем хочу заметить, что старые переводы, когда над ними работали профессионалы в IT, а не "эксперты в лингвистике", по моему ощущению были гораздо адекватнее.
За большинство примеров в реальном коде надо бить по рукам. Если что-то можно сделать, ещё не значит, что так нужно делать.
Функции — точно такой же объект, как любой другой. Их даже создавать можно через конструктор new Function.
Если метод лежит в прототипе, то все потомки по prototype chain получают возможность использовать одну копию метода.
А если мы их пишем в сам объект в конструкторе, то память под методы выделяется при создании каждого экземпляра. Чем больше экземпляров, тем больше расход памяти.
В варианте 2 память выделяется при вызове метода, в котором лежит setInterval, и освобождается после завершения работы, а в других вариантах этого не происходит.
Если у вас всего один экземпляр класса, то вы не заметите разницу. Только зачем вам тогда вообще классы?
А вот если экземпляров много, то случае с прототипным наследованием методы хранятся в прототипе, а в случае с хранением их в экземплярах — они дублируются для каждого экземпляра.
(ворчание) А потом они удивляются, почему вкладка с todo-list app съедает пару сотен мегабайт оперативки...Это не наследование, а запись методов напрямую в экземпляр. От того, что вы через родительский конструктор запишите эти методы в экземпляр дочернего класса никакое наследование не появится.
В JS наследование реализуется через прототипы, а не методы в class properties
Вот такой код
фактически означает вот это
А вот такой код
фактически означает
У моего ресурса суточная поселаемость в районе 20к уникальных юзеров в сутки. Кто-то да сделает выводы.
Я/Мы Nginx
http://tesall.ru/
— Я сделал слайдер на чистом JS
— О_о (непонимающий осуждающий взгляд)
2019 год:
— Я сделал слайдер на jQuery
— О_о (непонимающий осуждающий взгляд)
Эх, как молоды мы были :)
Learning GraphQL, пожалуйста, если остался
Если внешняя система не поддерживает неблокирующий I/O, нода использует пул потоков, о котором в статье как раз говорится.
www.izbrannoe.com/news/eto-interesno/d-e-rozental-o-raznitse-mezhdu-vy-i-vy