Как эта цепочка работает. Когда интепретатор не находит затребованного метода или свойства, он обращается к проперти - прототип и, если в нее воткнут какой-то объект, интепретатор начинает искать затребованное в том объекте, и если там нету - к его прототипу и так шуршит объектами проникая в следующий через прототип если определено, пока не упрется. ))) Тогда уже делает эксепшн и ты читаешь про ундефайнед.
|
Изначально жаба скрипучая была создана для написания простых сценарием взаимодействия юзера с элементами веб-страницы. То есть изначально она не предназначена для индустриального программирования, а само индустриальное программирование с каждым днем уходило все дальше за горизонты этой жабы, а жабные программисты со всей силы выкручивались пытаясь догнать радугу и плели эти прототипы как ловкие пауки. Ну вот, в новой версии интерпретатора сделали наконец-то чертежи, то есть классы и тем самым приблизили этот пластилин к промышленному стандарту.
|
но эти же классы работают по принципу прототипов?
|
Нет. Прототип - это дерево наподобие папок в твоем компе. Когда в этой папке нет искомого файла, ОС пытается искать его в следующей папке, если в ней нет - в следующей и так пока папки не кончатся или файл будет найден. Функции как объекты в жабе тоже не чертежи, поскольку создавать из них экземпляр не требуется. А класс - это чертеж. Сам по себе это просто код, который нельзя запустить как объект, сперва надо сделать из него объект. И в этом вся мякотка, что ты можешь модифицировать чертежи ДО того, как из них будут произведены объекты, а прототипирование работает только с живыми объектами.
|
возьми меня в ученики
|
Есть разновидность тн статических классов, с которых не делается экземпляр. Есть абстрактные классы, из которых по условию абстрактности нельзя делать экзепляр, с них можно только наследоваться. Это уже тонкости, которых может быть и нету в новой жабе. Я не проверял.
|
DivMan, ты с форума переключись на местную документацию, там русским языком все написано и получше наверно чем я тут калякаю.
|
Почитал что там пишут. Когда-то это было интересным, но теперь инфа уже серьезно устарела, в частности __proto__ этот уже считается юзать некомильфо, типа колхозный стайл. Но ты можешь вот тут почитать о плюсах и минусах https://learn.javascript.ru/classes
Я лично за минусы, ибо с тех пор клиент так разжирел, что беспокоийство о некотором увеличении расхода памяти стремится к нулю, а доступ к привату и паблику из одного места дает полную свободу. DivMan и вообще. Первое, что надо понять в отношении ООП вообще - зачем оно нужно и всякий раз приступая к реализации какой-то фичи понимать, нужны тут объекты, прототипы или может быть понадобятся или легко обойтись функцией с несколькими функциями внутри. |
А можно ли вообще обойтись без ООП, в сложных проектах?
|
Не делай культа из объектно-ориентированного программирования. Нужен объект - нарисуй объект, нужна функция как объект - нарисуй такую, нарисовал просто функцию и потребовалось снабдить ее свойствами - снабди, хочешь собирать объекты из функций по условиям - собирай, короче, жаба скрипучая - чрезвычайно гибкий скрипт, в сущности можно практически все.
Ты бы пописал в Си или в хотя бы Бейсике, сразу бы полюбил Жабу навеки. ))) |
Часовой пояс GMT +3, время: 03:08. |