Задать вопрос
  • Как сделать ссылку на Viber?

    @parfenov_sk
    На дворе 2017, если кому нужно еще —
    Открыть чат:
    <a href="viber://chat?number=ххххххххх">Viber</a>
    Добавить контакт:
    <a href="viber://add?number=ххххххххх">Viber</a>
    Номер без плюса.
    Ответ написан
    8 комментариев
  • Объясните что такое полиморфизм простыми словами ?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Я в шоке, если честно... Вот как ни начинаются вопросы про ООП в Javascript, так руки в ноги и понеслось... Кто Java, кто C# примеры приводит. да ещё портянками суровыми. И каждый приписку делает — дескать в Javascript не так наглядно.

    То есть человек, изучающий Javascript, и никогда не видевший других языков, тут же радостно закивает от вида незнакомого синтаксиса? Вы и взаправду преисполнены веры в такой светлый финал?

    Спрошу всех отвечающих:
    1. Number.prototype.toString() и Object.prototype.toString() — это полиморфизм или нет?
    2. Date.prototype.hasOwnProperty() и Object.prototype.hasOwnProperty() — это наследование или нет?
    3. В чём тогда между ними разница?

    ПыСы. И ещё хочу спросить всех знатоков любых языков, кроме указанного в вопросе — если в темах с тэгами Python, Ruby, PHP, C# я начну строчить куски кода на Javascript, потому мне кажется, что так понятнее, как скоро подписанные на эти тэги попросят меня забанить?
    Ответ написан
    7 комментариев
  • ООП в Javascript

    creage
    @creage
    Прототип задает значение свойства на все объекты класса — это важный момент. Т.е. в первом случае у вас каждый объекта класса А будет иметь сове, личное свойство b, во втором же все объекты класса А имеют одно, общее свойство b.
    Ответ написан
    Комментировать
  • В каких случаях использовать ООП?

    Ni55aN
    @Ni55aN
    ООП уместно использовать для тех задач, где компоненты приложения будет удобнее разделить на некоторые абстракции (сущности)

    Особенности:
    • - нет необходимости применять ООП для очень мелких программ/скриптов
    • + желательно использовать в программах, которые потребуется поддерживать и улучшать
    • + необходимо использовать в больших программах (чем больше функций должно выполнять ПО, тем сложнее будет их все правильно структурировать и реализовать)


    Например, в самом простом калькуляторе нет необходимости что-то представлять в виде объектов, достаточно функционального стиля (все что от него требуется, это методы add, sub, div, mul и т.д.)
    Если что-то посложнее, тогда с одними функциями будет сложно работать, и будет сложнее разбираться в коде (поддерживать его) и понимать какая часть кода за что отвечает (нажатие кнопки, вывод результата).
    В случае с ООП можно такие компоненты представить в виде классов, тем самым оградить нужные данные и методы от остальных (классы Button, Field, и Operation, например). Конечно, и кода станет больше, но зато потом будет легче в нем разобраться, чем перебирать все функции и места, где они выполняются.
    3 принципа ООП:
    • инкапсуляция - изолирование некоторых данных и методов от прямого внешнего воздействия
      Например, у Button есть имя, но оно не должно быть доступно как public, чтобы его не могли изменять как попало, а изменять только через метод setName, который будет контролировать что можно ставить как имя кнопки, а что нельзя

    • наследование - позволяет придать некоторому классу те же свойство, что и у другого.
      Часто встречающийся пример - Транспорт, имеет методы движение(), остановить(). Те же самые методы по сути должны иметь все виды транспорта, и чтобы в классах Велосипед и Автомобиль заново не прописывать все эти методы, можно унаследовать их от класса Транспорт. Тем более это связано со следующим принципом, по которому не нужно знать в итоге в каком Транспорте мы находимся и как он работает, а достаточно лишь знать, что он умеет двигаться и останавливаться

    • полиморфизм - позволяет работать с данными не заботясь о том, какие дополнительные свойства имеют эти данные (объект) или какого они типа
      Например, есть класс Месседжер, он имеет метод отправить(что-то). В виде параметра нужно передать то, что нужно отправить, а это может быть как текст, так и файл. Это пример статического полиморфизма (хотя в JS его трудно назвать таковым, так как он с динамической типизацией и не имеет перегрузки методов, и все разборки по поводу того, что делать с данными разного типа происходят при выполнении программы). В динамическом необходимо знать только то, что умеет делать определенный объект и не важно чем он есть на самом деле и как он это делает (см. пример с классом Транспорт выше)

    Ответ написан
    2 комментария