Open IgorKulishov opened 6 years ago
Напиши какие есть вопросы. Можешь добавить свои статические методы.
В целом конструкция мне понятна. Одна просьба есть. Сейчас, углубляясь в детали основных вещей, мне трудно понять применение на практике таких решений в виду отсутствия опыта. При дальнейшем описании тех или иных новшеств не мог бы ты сразу указывать, как или где или для чего используются описываемые вещи. Мне было бы легче углубляться в жизнь программирования, понимать не такие явные вещи и более глубокое устройство программного мира. Собственно, что касается static, то тут как раз вопрос. Мне кажется, что обращаться к методу напрямую проще. Так почему бы сразу не указывать static во всех создаваемых классах? И почему встроенные классы не наделены такой возможностью?
Классы это как базисный проект зданий. Сам же объект который создаётся при помощи оператора new можно сравнить с зданием, а внутри constructor мы определяем количество комнат, дверей, количество этажей. Когда мы создаём При помощи static ты можешь обращаться к самому проекту напрямую. В static можно хранить то что никогда не будет варьироваться от объекта к объекту. К примеру размер кирпича, сечение водопроводной трубы или методы кладки кирпича.
К static действительно проще обращаться когда у тебя небольшое приложение и мало классов и объектов, однако когда у тебя много классов (класс kitchen , shower, ) и каждый объект созданный от класса kitchen уникален то применять static можно только для общих методов и свойств , а к примеру тип мойки , холодильника и шкафа создавать при помощи конструктора.
Мы можем написать пример в твоем приложении.
Мы продолжим изучать классы и в этой главе рассмотрим оператор методов static. В следующей главе мы рассмотрим унаследование класса при помощи extends, далее операторы ES6 и на этом мы закончим наше предварительное знакомство с JavaScript ES6 и перейдем к TypeScript - непосредственному языку программирования Angular фреймворк.
оператор static
Как ты уже видел, что бы обращаться к свойствам и методам класса нужно сначала создать объект класса при помощи оператора new. Однако из этого правила есть и исключение для того что бы обратиться напрямую к свойству или методу класса без создания его копии нам необходимо внутри класса перед названием метода поставить оператор static. Рассмотрим несколько примеров: Пример 1-ый:
Пример 2-ой: Еще один пример обращения напрямую к методу через static:
Как ты видешь мы используем сразу два оператора static get.
Пример 3-ий: В объектно-ориентированных языках существуют интересные конструкции, когда мы обращаемся к другим методам внутри класса и даже создаем копию объекта класса (instance) при помощи оператора new и выглядит это следущим образом (пример из книги https://learn.javascript.ru/es-class):