23.09.2012, 01:23
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Небольшая репозитошка
Наконец, руки дошли до слива кое-какого кода в на гитхаб. Так уж сложилось, что более-менее крупные проекты сделаны наполовину, поэтому пришлось слить всего несколько функций, которые накопал на форуме: https://github.com/finom/Functions (в каждой папке описание с js файлом). Английский знаю очень плохо (на уровне "чтоб понимали"), поэтому там может быть куча ошибок (которые с радостью исправлю).
В планах залить в этот репозиторий:
— Простейшую реализацию "классов", без сахара (все реализации, на мой взгляд, жутко перегружены, и нужна простая как пять копеек функция)
— Продолжить бороться и допилить defineProperty для ИЕ8. Возможно, даже, сделаю какое-то подобие наследования.
— Допилить эту хрень: require как в ноде и добавить сахарку. Не знаю, насколько это полезно, поэтому рассматриваю, как "захотелось сделать какую-то неведомую хрень".
|
|
23.09.2012, 19:03
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Допилил классы. Самое "тяжелое" по количеству строк там — это поддержка разных аргументов.
Сообщение от Maxmaxmахimus
|
уже поздно бро, уже поздно)
|
Разница между нами в том, что я уже активно юзаю это хрень в проекте. А ты — ну сделал и сделал.
|
|
24.09.2012, 15:50
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Оставьте вы уже животных в покое! Даёшь жизненные примеры!
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
24.09.2012, 16:51
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
У меня всё гораздо проще:
MyClass = Class( Parent, Constructor, prototype );
Вот такая запись:
MyClass = Class( Parent, function MyClass () {
this.a = 3;
}, {
method: function() {}
});
Аналогична вот такой:
MyClass = function MyClass () {
this.a = 3;
}
MyClass.prototype = {
method: function() {}
}
inherits( MyClass, Parent ); // самое простое наследование, которое можно найти в любом учебнике
Обычное сокращение синтаксиса, без изобретения всяких __construct__ (что это за херня вообще? Зачем эта дикая инкапсуляция?), просто возвращает констркутор.
Всяких super и другой ненужной фигни здесь нет, надо юзать apply и call. Тем более, при множественном наследовании нельзя с уверенностью сказать, где super а где не super.
|
|
24.09.2012, 16:58
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Maxmaxmахimus
|
сразу видно человек не знаком с PHP
|
И? Мы разве на похапэ здесь кодим?
Сообщение от Maxmaxmахimus
|
super нужен для доступа к перекрытому методу. и он не фигня, иначе докажи обратное.
|
Сообщение от Maxmaxmахimus
|
че за бред?
|
Включи логику.
|
|
24.09.2012, 17:06
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Maxmaxmахimus
|
super нужен для доступа к перекрытому методу. и он не фигня, я думал фигня это ненужная вещь, а это нужная вещь, иначе докажи обратное.
|
Если наследуемое свойство объекта перекрыто - значит так и должно быть. Если нужно обратиться к свойству предка - значит наследование построено неверно, либо кривая реализация у перекрывающего свойства (это относится только к методам).
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
24.09.2012, 17:09
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Перечитай мой коммент ещё несколько раз.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
24.09.2012, 17:11
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Maxmaxmахimus
|
А как у тебя реализованные статические свойства?
|
Так же, как и в любом конструкторе, создаётся переменная, меняется в методе, определенном в самом конструкторе. Обычная традиционная инкапсуляция.
Сообщение от Maxmaxmахimus
|
дело в том что интуитисно понятно что метод с этим названием вызывается при конструировании обьекта.
|
Ты мне как-то писал в ЛС с предложением глянуть твою функцию, я тебе сказал, что ты пытаешься реализовать ООП как в других языках. Сейчас я в этом убедился, ты пытаешься сделать "как в похапэ".
Сообщение от Maxmaxmахimus
|
я не понял, у меня если родительского метода с таким именем нет то super === undefined , включая логику не понял зачем нам знать что супер а что не супер? я даже предложения если честно не понял вот и написал что бред. Напиши другими словами.
|
Ты наверно не понял, что я имею в виду под множественным наследованием. Имеется в виду, что один класс наследует сразу несколько, а не один.
|
|
24.09.2012, 17:29
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Maxmaxmахimus
|
То есть допустим я должен в любой момент узнать сколько у меня котов например.
|
Ну вот и решай задачи с котами. Лично у меня не было задачи посчитать котов (количество экземпляров класса). А если надо будет, сделаю статичное свойство прямо в конструкторе:
MyClass.num = 0;
Да и вообще, приватное свойство — это то свойство, которое доступно экземпляру (каждому своё), а не всем экземплярам сразу.
Сообщение от Maxmaxmахimus
|
Что именно я пытаюсь сделать как в PHP прости? И что именно я пытаюсь сделать как в других языках?
|
super и какой-то __construct__.
Сообщение от Maxmaxmахimus
|
типа цепочка?
|
Нет, не цепочка.
Где-то было видео с какой-то русскоязычной конференции, где человек объяснял суть ООП в яваскрипте и описывал принцип копирования, в противовес наследованию.
|
|
24.09.2012, 17:30
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
|
|
|
|