Pull to refresh
14
0
Юрий Горин @CoolWolf

Senior Monkey-coder

Send message

Кто бы сомневался. Деньги не пахнут

Всё решается настроенной связкой eslint + prettier и набором правил для них под кодстайл проекта

Вот из-за таких вот "переводов" читать предпочитаю в оригинале, все последние попытки прочитать книгу в русском переводе спотыкались о "замковый механизм, чтобы обойти пределы модели конкурентности" и другие дивные термины и выражения, существующие только в голове "переводчика" :)


Причем хочу заметить, что старые переводы, когда над ними работали профессионалы в IT, а не "эксперты в лингвистике", по моему ощущению были гораздо адекватнее.

За большинство примеров в реальном коде надо бить по рукам. Если что-то можно сделать, ещё не значит, что так нужно делать.

Функции — точно такой же объект, как любой другой. Их даже создавать можно через конструктор new Function.


Если метод лежит в прототипе, то все потомки по prototype chain получают возможность использовать одну копию метода.


А если мы их пишем в сам объект в конструкторе, то память под методы выделяется при создании каждого экземпляра. Чем больше экземпляров, тем больше расход памяти.

В варианте 2 память выделяется при вызове метода, в котором лежит setInterval, и освобождается после завершения работы, а в других вариантах этого не происходит.


Если у вас всего один экземпляр класса, то вы не заметите разницу. Только зачем вам тогда вообще классы?


А вот если экземпляров много, то случае с прототипным наследованием методы хранятся в прототипе, а в случае с хранением их в экземплярах — они дублируются для каждого экземпляра.

(ворчание) А потом они удивляются, почему вкладка с todo-list app съедает пару сотен мегабайт оперативки...


Это не наследование, а запись методов напрямую в экземпляр. От того, что вы через родительский конструктор запишите эти методы в экземпляр дочернего класса никакое наследование не появится.


В JS наследование реализуется через прототипы, а не методы в class properties


Вот такой код


class Test {
  myMethod() {
    ...
  }

  set() {
    setInterval(() => this.myMethod(), 300);
  }
}

фактически означает вот это


function Test() {}

Test.prototype.myMethod = function() {...};

Test.prototype.set = function() { 
    setInterval(() => this.myMethod(), 300); 
};

А вот такой код


class Parent {
   getValue = () => 1
}

фактически означает


function Parent() {
  this.getValue =  () => 1
}
  • посещаемость. Не вижу кнопки редактирования комментария на мобильной версии: (

У моего ресурса суточная поселаемость в районе 20к уникальных юзеров в сутки. Кто-то да сделает выводы.

это всего лишь пример. Здесь инициализируется реактивная переменная-счетчик со стартовым значением 0.
2009 год:
— Я сделал слайдер на чистом JS
— О_о (непонимающий осуждающий взгляд)

2019 год:
— Я сделал слайдер на jQuery
— О_о (непонимающий осуждающий взгляд)

Эх, как молоды мы были :)
Спасибо. Могу забрать в понедельник?

Learning GraphQL, пожалуйста, если остался

Не работал с монгой, так что не дам комментариев по её поводу, но вот утверждение о том, что Оракл или постгрес блокируют поток — однозначно ложный. Если бы это было так, то применение этих СУБД с нодой было бы невозможным :)

Если внешняя система не поддерживает неблокирующий I/O, нода использует пул потоков, о котором в статье как раз говорится.
Для I/O используется пул потоков, размер которого ограничен по-умолчанию 4-мя потоками, соответственно одновременно может выполняться только 4-ре I/O операции, остальные встают в очередь, так что это потенциальное узкое место. При необходимости размер пула можно увеличить. И не для всех операций этот пул используется, если внешний API поддерживает неблокирующий ввод-вывод, то пул не нужен.
а вы статью точно внимательно читали? JS однопоточный, но неблокирующий ввод-вывод реализован путём запуска отдельных потоков (threads) через средства ОС, соответственно вся работа с сетью и файлами и запускается в отдельных потоках.
Спасибо за хороший перевод хорошей статьи!
За применение таких селекторов на продакшене надо лоботомию делать.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity