Pull to refresh
0
0
Zeroglif @Zeroglif

User

Send message
>Удивляет, что большинство сетевых ресурсов по JavaScript оказались бесполезны.

2006 год — обсуждалось на Винграде
2007 год — обсуждалось на ДКлабе

Обсуждалось и задолго раньше, ссылок из глубокого прошлого под рукой нет, поверьте на слово. И конечно же это поведение описано и на более молодых ресурсах, и в ньюсах англоязычных, и в книгах (того же Флэнагана), и в спеках языка, и в самой экме… Но вдумчиво не читали, не читаем и не будем читать. Всё как всегда — ни дня без чудесного открытия… ;-)
Первый же ваш пример (тот, что в столбик) лично моими глазами отлично читается, «r» от «z» отличается, ничего не сливается. Третья мета уже давно укоренилась, привычна, да и не так-то часто до неё дело доходит, вряд ли призыв отказаться во что-то выльется. И кстати, на слух тоже всё неплохо (то, что в голове проговаривается), БАР и БАЗ благозвучнее/яснее, чем БАР и КУИКС. Если же на практике дело дойдёт до каши из баров, базов и батов, думаю, вменяемый программист сам смекнёт, что получилась каша, и повернётся в сторону другой переменной, например «rol»… ;-)
>… таких классов нет и не было. Здесь всё верно.

Смотри, как всё просто — в языке нет классов, нет жёстких связей и структур, заданных классом, нет вообще классовой терминологии (а те три терминологических грамма, что всё-таки насыпались в доки: new, instanceOf… самим же создателем признаются неточными по сути языка, извиняется он).

Но зато есть прямое указание на то, что классов нет, есть функции-конструкторы, есть прототипы, есть делегирование, есть сильно выраженная функциональная часть, есть всё то, что помогает противопоставить этот динамический, лёгкий, написанный изначально для не-программистов, язык любому другому, который существовал на момент создания js, показать его особенности, его своеобразие, его красоту (ну, или уродство, кому как). Простая и достаточно точная аксиома «нет классов» помогает новичку разобраться с тем, а что же тогда есть, а как структурировать, а как наследовать и т.д.? Противопоставляя, он вычленяет идеи и особенности языка.

Ты же предлагаешь мять в руках изощрённый терминологический пластилин: вот таких классов нет, но есть такие..., классы есть, но нет сахара..., тут вроде так, но если поставить тег, то будет эдак, тут подходит термин как Python-е, тут борьба со сложностью. В принципе, плевать, что и как в Python-е и тем более в CoffeeScript-е, да мало ли сколько существует жёванных-пережёванных определений для классов и вообще для всего. Зачем javascript-у цепляться за термин «first-class dynamic classes», что это даст изучающему язык? Ничего, кроме мороки, ни в доках нет, ни в сети язык в этом контексте не обсуждается, никакого практического приложения. Вон какие простыни приходится тут писать вокруг одного предложения: «классы в языке — это возможность генерировать и классифицировать»… ну, тогда везде они… классы эти.

зы. всё-таки продолжаю бороться со сложностью — классов в js нет ;-)

Можно «тчк зпт» или без пробела «тчкзпт», в телеграфном стиле пишут так:

ИЗ ЧИСЛА ЛАУРЕАТОВ СООТВЕТСТВУЮЩИХ ПРЕМИЙ ПРАВО НА ДОПОЛНИТЕЛЬНОЕ МАТЕРИАЛЬНОЕ ОБЕСПЕЧЕНИЕ ИМЕЮТ двтч
ЛАУРЕАТЫ СТАЛИНСКОЙ ПРЕМИИ тчк зпт
ЛАУРЕАТЫ ЛЕНИНСКОЙ ПРЕМИИ тчк зпт
А без «стиля» классов нет в языке? ок… ;-)
Надо бы точку с запятой в конце поставить… после последней фигурной… для порядку. ;-)
Упрощу текст иначе субботний вечер меня просто не поймёт:

— конструктор может создавать объекты;
— а у объекта можно создать свойство, которое запомнит конструктор.

В js есть классы, т.к. есть конструктор и можно свойства создавать, запомнив конструктор? Тогда я могу наварить спагетти в коде, но прекрасно себя при этом чувствовать, примитивно что-то там для себя классифицируя, связывая объекты друг с другом, свойство х, свойство y. Там фабрика, сям фабрика, вот и структура некая. В самом языке динамичность объектов, изменяемость со всех сторон, ноль жёстко заданных связей и поведения, делегирование, но по твоей логике это не мешает мне самому объявить «классы», иными словами в js есть классы, т.к. я «программирую в классифицирующем стиле». Стиль программирования решает. Точка. ;-)

з.ы. Сlass is not equivalent to prototype/closure-based OOP in JS today. There is no way today to make an instance that is sealed against mutation by addition of new properties. /Brendan Eich
Кстати, может тогда ты напишешь. Класс в js/es3 — это…
Дим, где в js возможность классифицировать??? Твои теги "[object Object]", "[object Array]" — это пшик, во-первых, этого вообще не было изначально, во-вторых никто строго не соблюдал до определённого момента (может и сейчас глюки, не веду статистику движков), я уж молчу про объекты хоста… Создал ты объект одним конструктором, потом вторым, третьим и что даёт общий для всех тег 'Object'? Классов нет. ;-)
Дайте определение тогда своё. Класс в js/es3 — это…
Чтобы не писать постоянно сноску «классы есть, но… без сахара», без сахара, без сахара… и ждать, пока запросят расшифровку на тему сахара, проще вспомнить, что «ECMAScript does not contain proper classes such as those in C++, Smalltalk, or Java» и отвечать жёстко, сверкая глазом и без всяких там условностей:

— Есть ли в JS(ES3) классы?

— Нет и никогда не было!
Firefox 3.6 на миллионе итераций

* foo: 2082ms
* bar: 2084ms

* fooP: 1756ms
* barP: 1585ms

Разница микроскопическая, уберём узкое место 'fooP' в виде локальной переменной 'p', сделав вместо неё свойство 'this.p'

* foo: 2056ms
* bar: 2120ms

* fooP: 1528ms
* barP: 1564ms

К чести FF один в один.
> Обёртки для создания классов: зло или добро?

1) Умеючи и для себя — добро.
2) Плохо сделанные монстры для неискушённой публики — зло.

Зря ты так. Я его ловил, указывал на ошибки, премодерация меня не удавила.
Если будет нцв про IE — это первый признак того, что перед вами скорее измученный верстальщик, чем js-программист. Так что вполне себе хорошее предложение для отсева… ;-)
Если ответ на вопрос 7.2 («отличия между браузерами») займёт по времени менее 18 часов — на работу ни в коем случае не брать. ;-)
И что? Это всё есть в javascript. Напомню, javascript — это…

object-oriented
....object-based
........prototype-based
............delegation-based

… язык.
Не утверждали, это правда, я про популярность. Конструктор создаёт объект (минус одна операция против фабрики), связывает прототип (минус ещё пару операций)… Вряд ли кого-то может сильно увлечь синтаксис привычный, на логику же смотрят. Очевидная причина популярности скорее привычное и компактное создание объектов-экземпляров, многократно описанное в офиц. доках именно таким образом. Думаю, так. ;-)
> Самая очевидная причина его популярности — волшебный синтаксис new Class(), столь милый сердцу, привыкшему к классическому ООП

Всё-таки «волшебный синтаксис» тут вторичен. Фабрика не создаёт и не связывает объект с прототипом. Довольно существенна разница по сравнению с вызовом/использованием конструктора.
Не говори неправды и не суди людей по количеству постов. ;-)

Information

Rating
Does not participate
Registered
Activity