Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Классы в javascript? (https://javascript.ru/forum/misc/25651-klassy-v-javascript.html)

Mахmахmахimus 16.02.2012 19:44

Цитата:

Сообщение от poorking
Гугл закрыли?

ты думаешь я щас параллельно не читаю ни википедию не про классы а только тут спрашивю какую-то мелочь и жду ответа по пол дня?

Цитата:

Сообщение от poorking
Тебе будет грустно когда ты поймешь, что полноценные классы реализовать не получится.

почему я должен это понять если это не правда? Или это правда? Если, то тогда я не буду делать классы. Если да то почему?

Цитата:

Сообщение от poorking
Ах, да, не забудь про перегрузку полей, и что потомки не могут сужать права доступа к полям, а только расширять.

что такое перегрузка полей? У меня ни чего не хранится в замыканиях, я сразу знал что придется много чего добавлять по этому добавил все наборы свойств в обьекты. Я могу добавлять методы и все что угодно динамически обращаясь к этим объектам.

Но что такое перегрузка?

poorking 16.02.2012 19:52

Я о тебе не думаю, я просто вижу человека, фанатичного влюбленного в провальную идею

poorking 16.02.2012 19:56

Цитата:

Сообщение от poorking
добавил все наборы свойств в обьекты

Какой тогда смысл от объекта __private__ если он доступен снаружи?

Цитата:

Сообщение от Mахmахmахimus
Но что такое перегрузка?

Все таки закрыли... :(


Расскажи как ты реализуешь protected access

Mахmахmахimus 16.02.2012 20:04

Цитата:

Сообщение от poorking
Какой тогда смысл от объекта __private__ если он доступен снаружи?

Смысл в избавлении от избыточности, у меня есть функция сеттер и геттер, они работают по одинаковому шаблону, меняется только название свойства. Вот такой смысл. Оно возникло в следствии оптимизации.

Цитата:

Сообщение от poorking
Я о тебе не думаю, я просто вижу человека, фанатичного влюбленного в провальную идею

ни одного аргумента
В таком случае если у меня получится обещай себе что ты не будешь это использовать. Так как нет смысла использовать провальные либы. Просто такое чувство что ты не хочешь чтобы у меня получилось, хотя это не логично, ты должен хотеть чтобы у меня получилось.

poorking 16.02.2012 20:10

Mахmахmахimus,
Кстати про перегрузку ладно, это я ступил, она не имеет смысла в JS потому что нет типизации строгой и ограничения на кол-во аргументов в функцию, она типа динамическая в JS.

Это когда

//Наверно это Java:
class A {
    int method (int a) {
         return a * 2;
    }
    float method(int a, int b) {
        return a / b * 0.1111;
    }
    void method() {
        // doSomething
    }
}


в JS это один метод будет

Ладно, ты делай, а потом покажешь, и мы все в свои проекты засунем твою библиотеку

Mахmахmахimus 16.02.2012 20:34

Цитата:

Сообщение от poorking
Ладно, ты делай, а потом покажешь, и мы все в свои проекты засунем твою библиотеку

Okay, а пока просто хочу вначале сделать разграничение на приватные и публичные. Все по порядку, от простого к сложному. И наследование будет и все все все. Слушай а интерфейсы делать и разделения не виртуальные методы и.т.п.
Или это все лишнее? То есть Если мы наследуем класс от другого класса, то в дочернем будут доступны все НЕ протект методы родительского? Просто вот ответь и все, какие методы должны быть доступны дочерним классам? И их можно будет перекрывать, и внутри перекрытых методов должен быть доступ к методам родительского класса через слово superClass на сколько я понимаю)?

Знаешь как я это делаю? Все методы сущности вызываются через цепочку из 4 обьектов связанных через __proto__ эта цепочка называется self, методы биндятся к этому self обьекту.

ПОКА у этой цепочки на конце идет просто Object.prototype Но ты уже понимаешь что я могу туда спокойно прикручивать другие цепочки от родительских классов) я пока не совсем представляю как будет, но уже примерно понимаю что это нужно и оставил для этого место.

poorking 16.02.2012 20:48

Mахmахmахimus,
Цитата:

Сообщение от Mахmахmахimus
Просто вот ответь и все, какие методы должны быть доступны дочерним классам?

Наследуются public и protected
Цитата:

Сообщение от Mахmахmахimus
Слушай а интерфейсы делать и разделения не виртуальные методы и.т.п.

Это тебе решать, но мне показалось то ты хотел сделать 100% супер-настоящие классы
Цитата:

Сообщение от Mахmахmахimus
И их можно будет перекрывать, и внутри перекрытых методов должен быть доступ к методам родительского класса через слово superClass на сколько я понимаю

Да, но, потомок не может так оверрайдить метод предка, что сузит доступ
нему. То есть, пусть у родителя есть метод protected ololo(). Потомок не может определить private ololo(), но может public ololo()

Mахmахmахimus 16.02.2012 21:04

public и protected родительского становятся private дочернего?

И еще вопрос, как лучше реализовать наследование? Функцией
Class.extend(ParentClass)

или сразу при описании класса лучше делать так
var Class(ParentClass, function(){
 //описание класса
})

poorking 16.02.2012 21:14

Цитата:

Сообщение от Mахmахmахimus
public и protected родительского становятся private дочернего?

Почему?
Цитата:

Сообщение от Mахmахmахimus
как лучше реализовать наследование?

Как тебе удобней будет этим пользоваться, так и делай

Все отстальные ответы на жугл.ком

Mахmахmахimus 16.02.2012 21:19

Цитата:

Сообщение от poorking
Почему?

Потому что ТОЛЬКО их (private) нельзя перекрыть доччерними.
все разобрался.

Цитата:

Сообщение от poorking
Это тебе решать, но мне показалось то ты хотел сделать 100% супер-настоящие классы

Не совсем, на самом деле я хочу сделать что-то очень мощное и удобное и динамическое при том чтобы лучше обычных классов и прототипов было в идеале. Просто Сделать штуку которая будет похожа на классы, но будет иметь и много своего, по этому желательно 100% всего важного с классов перенять, сохранив динамичность. При том не перенимать не важное.


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