Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ООП и JavaScript (https://javascript.ru/forum/misc/64719-oop-i-javascript.html)

scrollquest 01.09.2016 08:41

Ostic,
В смысле плюсов и жабы нет, собственно, в плюсах и жабе ООП вообще нет, там нечто, что *принято* называть ООП, по недоразумению. Алан Кей, как известно, не это имел в виду. Соответственно, о наличии там классов тоже как то с натяжкой можно говорить. Короче, то что в плюсах и жабе принято называть классами -- это миксины по сути.

scrollquest 01.09.2016 08:46

Цитата:

Сообщение от Ostic
почему класс называется function()

функции классами часто называют и в JS. Но это только дебилы. Это функции-конструкторы, как правило имеются в виду

Ostic 01.09.2016 16:27

Цитата:

Сообщение от ksa (Сообщение 427340)
Видать тебя все ждали. :D

а это хамством попахивает.:nono:
такое в глаза надо говорить, герой компьютерный.
Цитата:

Сообщение от destus;
А какой тогда смысл в классах? Если у объектов будет разный набор свойств

пожалуй, что да, вы правы - специфика JS
Цитата:

Сообщение от warren buffet;
Это объект, инстансь, а класс - это текст.

согласен, естественно, но, думаю понятно, что это неточность.
хотя после того как в JS function ...
Цитата:

Сообщение от scrollquest;
Алан Кей, как известно, не это имел в виду
в плюсах и жабе ООП вообще нет

вот только не надо... Алан Кей...
я вам больше скажу:"там вообще кроме транзисторов и прочих нанометровых элементов ничего нет..."
давайте об этом не будем, а то уйдем далеко в мат логику и теорию КА.

Bond 02.09.2016 05:59

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

warren buffet 02.09.2016 07:57

Bond, js что-то вроде https://en.wikipedia.org/wiki/Value_object или атома водорода из которого непостижимым образом можно сделать золото и бриллианты. А твое мировоззрение креационистское, типа бог создал класс и увидел что это хорошо. На второй день он создал конструктор, на третий деструктор, затем допилил геттеры и сеттеры и в пятницу забухал и бухает до сих пор.

warren buffet 02.09.2016 08:03

Цитата:

Сообщение от destus
Если у объектов будет разный набор свойств.

Это называется как будто lazy binding. Я давно не читаю ничего по прог-сайнс и забыл что читал. Смысл в том, что тебе не надо знать какие там могут быть свойства и методы заранее, а надо их создавать и применять по требованию. В php все это делается легко благодаря __get, __set, __call, __invoke, etc.

Ostic 02.09.2016 10:47

Цитата:

Сообщение от Bond (Сообщение 427440)
Ну или забыть чему тебя Javы и другие CLASSные языки учили и принять немного другой подход JS.

просто поначалу наступает шизофрения: вчера сел на Си писать и область видимости теряю :-?
понятно же что создавая автоматическую переменную
Код:

{int i;}
i за операторными скобками не видна, а я 2 дня подряд сплю по 3 часа и до 6 утра читаю местный учебник и уже сомневаюсь - а не будет ли она видна снаружи?
конструкции типа (func)(), в которые вкладывается совсем разные смыслы...
в том же Си там сортировки, случайные числа (можно по терверу эксперименты ставить), хэш-функции самописанные, деревья(красно-черные и ван эмде боаса), очереди (хоть на списках, хоть на массивах... биномиальные) и т.д. и т.д. и главное четко понимаешь как это работает, сколько памяти потребляет.
а js это совсем иное: более начетническое, тк если не знаешь, как свойство или метод называется, то "давай, дасвиданья"...
сегодня читаю про jQuery. сначала я не мог понять почему такой ажиотаж вокруг jQ, тк глядя на чистый код и глядя на jQ поначалу подумал:"зачем такое городить? надо писать на "чистом" js!" но прочитав несколько глав испытал неописуемое облегчение.
имхо вообще все к jQ придет и через пару лет может и вообще кто интерпретатор напишет(сохранив прежний синтаксис) я бы на это ставку делал.

scrollquest 02.09.2016 11:24

Цитата:

Сообщение от warren buffet
Это называется как будто lazy binding

не lazy а late, и это к наборам полей конкретного экземпляра не имеет ни малейшего отношения, это означает лишь то, что резольвинг происходит в рантайме, в момент вызова.

Bond 02.09.2016 16:46

Ostic,
jQuery всего лишь библиотека, в философию JS ничего нового не приносит, просто добавляет некоторого удобства работы с DOM и Ajax, кроссбраузерности и на ООП не влияет. Вот фреймворки теоретически может и могли бы повлиять или по крайней мере могли бы направить в другой русло, а библиотека есть библиотека - всего лишь прицепчик с удобствами который максимум что сможет сделать - это добавить пару тройку функций в новый стандарт JS

scrollquest 02.09.2016 18:14

Bond,
То что реально и кардинально может изменить(в тч улучшить, сделать мощней) ООП в JS -- это Proxy. Это, фактически, ключ к созданию своей собственной ООП-модели, синтаксически совместимой с нативным синтаксисом


Часовой пояс GMT +3, время: 19:42.