https://glot.io/snippets/fh3nmzqe1h
если я работаю с каким-то языком, то я стараюсь по возможности узнать об особенностях компилятора/интерпретатора, так как в каждом какие-то да найдутся, не существует идеального языка. мне лично в каждом что-то не нравится, но если он решает какую-то предметную задачу, то какая проблема?! если вам это смущает, обходите мимо, зачем ныть?! веб без JS на текущий момент времени невозможен, так что, либо приходится адаптироваться, либо нахер с пляжа. я выбрал 1-ый вариант и неплохо себя чувствую. если у вас полыхает 5-ая точка, не пользуйтесь им, зарабатывайте на хлеб с маслом тем, что вам нравится. всё остальное я уже пояснил выше.
я вам о мягком, вы мне о горячем, я вам о круглом, вы мне о красном. вы даже не пытаетесь вчитываться. читаю ваши ответы и просто постоянный фейспалм ловлю от того, что вы меня не слышите абсолютно. я вижу, что вы компетентны, так как понимаете о чём пишете, но, возможно, из-за так называемой сверхкомпетентности, а может из-за недальновидности, я не знаю, вы даже не пытаетесь критически обдумывать мои ответы, а просто агритесь. даже в прошлом комментарии я писал исключительно про JS, даже акцентировал на это внимание. увы, наша с вами полемика так и не перешла в дискуссию, посему, считаю дальнейшее обсуждение (даже хер знает можно ли это вообще обсуждением то назвать) бессмысленным.
если вам на самом деле интересно разобраться, то я могу попытаться объяснить.
в JavaScript есть несколько так называемых "примитивных" типов, к ним как раз и относятся строки и числа, примитивные они по тому, что могут хранить только одно значение (если это строка, то только строка, если число, то только число), но они тоже являются объектами только иммутабельными. у строк и даже чисел можно вызывать методы без дополнительных обёрток как в некоторых других языках. это всё делает под "капотом" интерпретатор.
так вот, когда мы складываем строку и число, это, внезапно, не что иное как перегрузка операторов (полиморфизм, все дела). только вот JavaScript интерпретатор поверил в свои силы и предоставляет неявные правила приведения типов.
плохо это или хорошо, это просто особенность языка, которую нужно знать. у PHP, Lua и даже Groovy есть похожие или такие же особенности, может языков с такой особенностью больше. становятся ли они все из-за этого "ненормальными"? что вообще подразумевается под "нормальностью"? лично мне JS крайне нравится, но с ним надо держать ухо востро, так как слишком много позволяет, но я ему это прощаю за его гибкость.
я не пытаюсь вас переубедить, и так уже наша беседа зашла слишком далеко так как мы всё же общаемся на разных "волнах", просто попробуйте взглянуть с другой стороны хотя бы на определение - https://en.wikipedia.org/wiki/Object-oriented_programming, - возможно, вы меня поймёте :) пусть каждый и останется со своим мнением
ОО парадигма подразумевает, что всё есть объект, даже if и else конструкции.
да пофиг, используют или не используют ООП, назови это хоть палкой. многие думают, что знают досконально, и не подвергают эти якобы знания сомнению. а на самом деле получается, что им вбили в головы, то и транслируют потом везде и всюду.
апосля возникают такие срачи с поливанием говна. возможно, это всё шутеечки, но я это нахожу крайне глупым.
почитайте хотя бы википедию что-ли, уж честное слово стыдно за ваши знания. а лучше почитайте Алана Кэйя, это тот чувак который ООП и придумал.
этот комментарий никак не камень в ваш огород :) и он именно ценен как цельный, поэтому я не разбивал его на части или абзацы.
Не знал, что степень нормальности определяется оопностью языка. А как быть процедурным языкам? Чем Си хуже JavaScript?
я попытался именно сконцентрировать внимание на то, что многие могут заплевать лицо собеседника во время холивара, яро доказывая, что ООПшнее Java или C#, даже не рассматривая то, что оба языка идеологически парадигму ООП реализуют частично. что именно в языке с динамической типизацией реализовать ОО парадигму полностью в разы проще, а то и вообще возможно.
Вообщем-то Smalltalk class-based, а JavaScript prototype-based, но заход неплохой.
на работу вы ходите в одной одежде, дома в другой, но всё равно это является одеждой, class-based и prototype-based - частным случаи ОО парадигмы.
Это единственное что вы правильно подметили :)
я надеюсь, вы меня поняли и заметили, что не единственное :)
когда-то, лет эдак 5 назад, когда я ещё писал на C#, а потом на Java, мне было интересно, чего все так *банулись с этим ООП и решил хорошенько разобраться с этим веером парадигм и методологий, а сопоставив для себя более лёгкие ассоциации в голове, до сих пор, если кто на собеседованиях втирает мне про крутость ООП в каких-то только определённых языках, то стараюсь включить мозг товарищу напротив подводя его под логические умозаключения. просто, это как-то глупо выглядит, как будто сравнивать 42-ой и 43-ий размеры обуви.
p.s.: 42-ой офигенный размер, всем советую :)
ваша 5-ая точка сейчас, возможно, рванёт на Марс, но JavaScript более ООП язык нежели эти самые Java, C# и их батя С++. Алан Кей и Smalltalk в помощь. поэтому нормальность крайне субъективна, особенно, если просто не разбираешься в предметной области
если вы не знаете язык, то это сугубо ваши личные проблемы
груви тоже плохо спроектирован? может кложура или даже скала?