Как стать автором
Обновить

Комментарии 8

Что общего у методов объекта Java и JavaScript? Пришедший из языка вроде Java скажет "." (точка, способ обращения к методу объекта).
Спасибо за перевод! Правда есть свои комментарии по этому поводу и было бы интересно услышать мнения других.

cart.addProduct = () => 'nope!' 
// В строке выше нет ошибки!


Если человек сам переопределил метод класса и потом удивляется, что метод работает не так как надо, ну такое себе.

Потеря this — можно юзать стрелочные функции, не?

Сначала странные люди из Java приходят в js и говорят:"нам нужны классы". Потом другие странные люди пишут, что this и new ведут себя странным не логичным образом. А на самом деле они не поняли прототипного наследования, что с синтаксисом классов совсем не удивительно.

Сомневаюсь, что классы понадобились странным людям из Java…
Эти люди знают, что наследование нужно для полиморфизма а не для исключения копипасты.
Полиморфизм в языке с утиной типизацией штука не сильно нужная, как и само понятие Class, потому что Class — это пользовательский тип (для странных людей из Java).

Кто-то, когда-то нас всех обманул, объявив Javascript объектно-ориентированным (такая тогда была мода), хотя по сути он является мощным, динамическим и красивым процедурным языком. В этом его сила!
с декораторами для babel все довольно элегантно

// ShoppingCart.js
export default class ShoppingCart {
  constructor({db}) {
    this.db = db
  }
  
  @autobind
  empty () {
    this.db = []
  }

  @freeze
  get products () {
    return this.db;
  }
}
Вот уже и аннотации пошли, ужес. JS ведь в них не нуждается, он и так выразителен до невозможности, до переизбыточности.
между декоратором и аннотацией есть существенная разница — декоратор вычислим.

Если вы работаете на позиции разработчика, то это подрозумевает, что Вы понимаете как работает Ваш язык. Например в С зачастую приходится вручную контролировать выделение памяти и ее освобождение. Если Вы выделяете память не особождая после ее использования, и удивляетесь memoryleak, значит Вы не компетентны в разработке на С.


Если Вы переопределяете метод экземпляра JS объекта и не понимаете, почему оно не работает значит Вы не компетентны в разработке на JS.


Обобщая: если Вы не понимаете как работает язык на котором Вы пишете, то Вы не компетентны в разработке на этом языке и здесь только один паттерн RTFM.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий